var target : Transform;
var damp = 5.0;
var speed = 3.0;
function Start () {
// Auto setup player as target through tags
if (target == null GameObject.FindWithTag("Player"))
target = GameObject.FindWithTag("Player").transform;
}
function Update () {
if (target Vector3.Distance(transform.position, target.position) < 30) {
var rotate = Quaternion.LookRotation(Vector3(target.position.x, transform.position.y, target.position.z) - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damp);
var controller : CharacterController = GetComponent(CharacterController);
var forward : Vector3 = transform.TransformDirection(Vector3.forward);
controller.SimpleMove(forward * speed);
}
else if (target Vector3.Distance(transform.position, target.position) > 30) {
}
}
Every time i play my game to test it, one of my enemies get stuck, or both of them get stuck. they just randomly stop. ill put a render of my game in this post if needed.
no, it works, but if it gets too high off of the ground or something like that, it just stops moving. the else if is jut there in case i want to do something in the future there
Well nothing in what you’ve posted here should be making the AI go up into the air, so there must be another script in the scene that’s making it move upward
As for the second question, you could easily figure out if its distance related by my earlier post, but you inexplicably chose to ignore it for some reason.
Change you code to this, for some simple debugging:
var damp = 5.0;
var speed = 3.0;
function Start () {
// Auto setup player as target through tags
if (target == null GameObject.FindWithTag("Player"))
target = GameObject.FindWithTag("Player").transform;
}
function Update () {
if (target Vector3.Distance(transform.position, target.position) < 30) {
Debug.Log("I am within attack distance.");
var rotate = Quaternion.LookRotation(Vector3(target.position.x, transform.position.y, target.position.z) - transform.position);
transform.rotation = Quaternion.Slerp(transform.rotation, rotate, Time.deltaTime * damp);
var controller : CharacterController = GetComponent(CharacterController);
var forward : Vector3 = transform.TransformDirection(Vector3.forward);
controller.SimpleMove(forward * speed);
}
else if (target Vector3.Distance(transform.position, target.position) > 30) {
Debug.Log("I am not within attack distance.");
}
}
Then run the code, and look in the log and see which Debug.Log message is getting printed when the enemy is stuck.