Animals can now move and stop and be animated to move

cow now has idle and run animation
This commit is contained in:
d-hain 2022-06-16 15:25:54 +02:00
parent 687a37eb89
commit 2a29e5413b
2 changed files with 29 additions and 4 deletions

View file

@ -13,6 +13,7 @@ GameObject:
- component: {fileID: 123187747779251107}
- component: {fileID: 2510115116361252818}
- component: {fileID: 4094795090309576525}
- component: {fileID: 3321960187907454328}
m_Layer: 0
m_Name: Cow
m_TagString: Untagged
@ -157,3 +158,24 @@ MonoBehaviour:
producedItem: {fileID: 11400000, guid: 510712f2d23afc147979bcd564ef7943, type: 2}
animalSprite: {fileID: 21300000, guid: e2bde586482642d44a270276574c0129, type: 3}
movementSpeed: 1
animator: {fileID: 3321960187907454328}
--- !u!95 &3321960187907454328
Animator:
serializedVersion: 4
m_ObjectHideFlags: 0
m_CorrespondingSourceObject: {fileID: 0}
m_PrefabInstance: {fileID: 0}
m_PrefabAsset: {fileID: 0}
m_GameObject: {fileID: 2510115116361252817}
m_Enabled: 1
m_Avatar: {fileID: 0}
m_Controller: {fileID: 9100000, guid: 353868083b4723041bbf6c45effa9223, type: 2}
m_CullingMode: 0
m_UpdateMode: 0
m_ApplyRootMotion: 0
m_LinearVelocityBlending: 0
m_StabilizeFeet: 0
m_WarningMessage:
m_HasTransformHierarchy: 1
m_AllowConstantClipSamplingOptimization: 1
m_KeepAnimatorControllerStateOnDisable: 0

View file

@ -6,14 +6,17 @@ using Random = UnityEngine.Random;
public class Animal : MonoBehaviour {
private Rigidbody2D _rigidbody;
private int _animMoveID;
public Item producedItem;
public Sprite animalSprite;
public int movementSpeed;
public Animator animator;
private void Start() {
_rigidbody = gameObject.GetComponent<Rigidbody2D>();
animalSprite = gameObject.GetComponent<SpriteRenderer>().GetComponent<Sprite>();
_animMoveID = Animator.StringToHash("moving");
// Move the Animal in any random direction every 1-5s
InvokeRepeating(nameof(MoveInRandomDirection), 2f, Random.Range(1f, 5f));
@ -31,15 +34,15 @@ public class Animal : MonoBehaviour {
direction.Normalize();
_rigidbody.velocity = movementSpeed * direction;
StopAllCoroutines();
animator.SetBool(_animMoveID, true);
yield return new WaitForSeconds(randTime);
_rigidbody.velocity = new Vector2(0f, 0f); }
_rigidbody.velocity = new Vector2(0f, 0f);
animator.SetBool(_animMoveID, false);
}
StartCoroutine(Move());
}
// TODO: Animations
private void OnMouseDown() {
ActionInvoker.InvokeAction(gameObject, PlayerController.instance.SelectedItem);
}