WanderingAI.cs 1.1 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. using UnityEngine;
  2. using System.Collections;
  3. public class WanderingAI : MonoBehaviour
  4. {
  5. public float wanderRadius;
  6. public float wanderTimer;
  7. private Transform target;
  8. private UnityEngine.AI.NavMeshAgent agent;
  9. private float timer;
  10. // Use this for initialization
  11. void OnEnable()
  12. {
  13. agent = GetComponent<UnityEngine.AI.NavMeshAgent>();
  14. timer = wanderTimer;
  15. }
  16. // Update is called once per frame
  17. void Update()
  18. {
  19. timer += Time.deltaTime;
  20. if (timer >= wanderTimer)
  21. {
  22. Vector3 newPos = RandomNavSphere(transform.position, wanderRadius, -1);
  23. agent.SetDestination(newPos);
  24. timer = 0;
  25. }
  26. }
  27. public static Vector3 RandomNavSphere(Vector3 origin, float dist, int layermask)
  28. {
  29. Vector3 randDirection = Random.insideUnitSphere * dist;
  30. randDirection += origin;
  31. UnityEngine.AI.NavMeshHit navHit;
  32. UnityEngine.AI.NavMesh.SamplePosition(randDirection, out navHit, dist, layermask);
  33. return navHit.position;
  34. }
  35. }