spitu
February 23, 2013, 6:38am
1
I have a very basic AI script in which if you were move your character close enough to the enemy, the enemy will follow you. That part works great. The problem comes once the enemy reaches you, he keeps trying to follow you and I want it so that he stops once he reaches you.
void Update()
{
if(Vector3.Distance(myTransform.transform.position, target.position) <= 12)
{
isMoving = true;
Quaternion targetRotation = Quaternion.LookRotation(target.position - myTransform.transform.position);
targetRotation.x = 0;
targetRotation.z = 0;
myTransform.transform.rotation = targetRotation;
if(isMoving == true)
{
myTransform.rigidbody.AddRelativeForce(Vector3.forward * moveSpeed, ForceMode.VelocityChange);
}
}
else
isMoving = false;
if(Vector3.Distance(myTransform.transform.position, target.position) <= 1)
isMoving = false;
}
HI,Its a simple fix all you have to do is add this part
float temomovespeed;
//ommited other part
void Start(){
temomovespeed = moveSpeed;
}
void Update(){
//ommited other part
if(isMoving == true)
{
moveSpeed = temomovespeed;
myTransform.rigidbody.AddRelativeForce(Vector3.forward * moveSpeed, ForceMode.VelocityChange);
}
}
else
isMoving = false;
if(Vector3.Distance(myTransform.transform.position, target.position) <= 1)
isMoving = false;
if(!isMoving)
moveSpeed = 0;
}
spitu
February 23, 2013, 9:08am
3
void Update()
{
if(Vector3.Distance(myTransform.transform.position, target.position) <= 12)
{
isMoving = true;
Quaternion targetRotation = Quaternion.LookRotation(target.position - myTransform.transform.position);
targetRotation.x = 0;
targetRotation.z = 0;
myTransform.transform.rotation = targetRotation;
if(isMoving == true)
myTransform.rigidbody.AddRelativeForce(Vector3.forward * moveSpeed, ForceMode.VelocityChange);
}
else
isMoving = false;
if(Vector3.Distance(myTransform.transform.position, target.position) <= 2)
isMoving = false;
if(isMoving == false)
moveSpeed = 0;
else
moveSpeed = 1;
}