PeopleController.cs 1.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152
  1. using UnityEngine;
  2. using System.Collections;
  3. public class PeopleController : MonoBehaviour
  4. {
  5. [HideInInspector] public float timer;
  6. [HideInInspector] public string[] animNames;
  7. [HideInInspector] public float damping;
  8. [HideInInspector] public Transform target;
  9. void Start()
  10. {
  11. Tick();
  12. }
  13. void Tick()
  14. {
  15. timer = 0;
  16. int randomAnim = Random.Range(0, animNames.Length);
  17. SetAnimClip(animNames[randomAnim]);
  18. timer = Random.Range(3.0f, 5.0f);
  19. }
  20. public void SetTarget (Vector3 _target)
  21. {
  22. Vector3 targetPos = new Vector3(_target.x, transform.position.y, _target.z);
  23. transform.LookAt(targetPos);
  24. }
  25. void Update()
  26. {
  27. if (timer >= 0)
  28. timer -= Time.deltaTime;
  29. else
  30. Tick();
  31. if (target != null)
  32. {
  33. var lookPos = target.position - transform.position;
  34. lookPos.y = 0;
  35. var rotation = Quaternion.LookRotation(lookPos);
  36. transform.rotation = Quaternion.Slerp(transform.rotation, rotation, Time.deltaTime * damping);
  37. }
  38. }
  39. public void SetAnimClip(string animName)
  40. {
  41. GetComponent<Animator>().CrossFade(animName, 0.1f, 0, Random.Range(0.0f, 1.0f));
  42. }
  43. }