Question by
jhomar12211 · Nov 25, 2016 at 05:28 AM ·
navmeshagent
Help About NavMeshAgent
Im creating an AI and I just need to patrol him around Please Help me to do this . Im just a Beginner in UNITY . Advance Thanks :) This is the Code of Tutorial that I Watch : using UnityEngine; using System.Collections;
[RequireComponent(typeof (NavMeshAgent))] public class chase : MonoBehaviour {
public NavMeshAgent agent;
public Transform player;
public Transform head;
static Animator anim;
string state ="patrol";
public GameObject[] waypoints;
int currentWP = 0;
public float rotSpeed = 0.2f;
public float speed = 1.5f;
float accuracyWP = 5.0f;
// Use this for initialization
void Start () {
anim = GetComponent<Animator> ();
agent = GetComponent<NavMeshAgent> ();
}
// Update is called once per frame
void Update ()
{
Vector3 direction = player.position - this.transform.position;
direction.y = 0;
float angle = Vector3.Angle (direction, head.up);
if (state == "patrol" && waypoints.Length > 0) {
anim.SetBool ("isIdle", false);
anim.SetBool ("isWalking", true);
if (Vector3.Distance (waypoints [currentWP].transform.position, transform.position) < accuracyWP) {
//currentWP = Random.Range (0, waypoints.Length);
currentWP++;
if (currentWP >= waypoints.Length) {
currentWP = 0;
}
}
direction = waypoints [currentWP].transform.position - transform.position;
this.transform.rotation = Quaternion.Slerp (transform.rotation, Quaternion.LookRotation (direction), rotSpeed * Time.deltaTime);
this.transform.Translate (0, 0, Time.deltaTime * speed);
}
if (Vector3.Distance (player.position, this.transform.position) < 8 && (angle < 30 || state == "pursuing")) {
state = "pursuing";
this.transform.rotation = Quaternion.Slerp (this.transform.rotation, Quaternion.LookRotation (direction), rotSpeed * Time.deltaTime );
if (direction.magnitude > 2.5) {
this.transform.Translate (0, 0, Time.deltaTime * speed);
anim.SetBool ("isWalking", true);
anim.SetBool ("isAttacking", false);
} else {
anim.SetBool ("isAttacking", true);
anim.SetBool ("isWalking", false);
}
}
else
{
anim.SetBool ("isWalking", true);
anim.SetBool ("isAttacking", false);
state = "patrol";
}
}
}
Comment
Answer by IronStarInteractive · Jan 25, 2017 at 08:22 PM
if you go to the unity manual you can find this it has a simple one in both C# and JS
Your answer
Follow this Question
Related Questions
Problem with NavMesh 0 Answers
Unity Default NavMesh question 1 Answer
NavMeshAgent and narrow paths 0 Answers
How to prevent NavMeshAgent from rotate? 1 Answer
How to make a NavMeshAgent move in the direction it is looking? 4 Answers