Detect direction of enemy with MoveTowards
Hi!, I'm using the MoveTowards function and is working just fine, but what I need to do is to capture the direction the enemy is moving, per example: If the enemy is moving towards the player in the "X axis" (horizontal) from "right-to-left" I want to associate that movement to a "-1" value, if it's moving from "left-to-right" use a "1" and the same with the "Y axis" (vertical). I need to do this to appropiate show the walking animations of the enemy. Any ideas of how could I retrieve this directions using the "MoveTowards" function?
//moves towards player during X seconds and then pauses for Y seconds
IEnumerator EnemyMovesTowardsPlayer()
{
enemyWalking = true;
if (enemyWalking)
{
if (walkingTimer > 0)
{
Debug.Log("Tiempo restante para andar = " + walkingTimer);
walkingTimer -= Time.deltaTime;
transform.position = Vector2.MoveTowards(transform.position, target.position, speed * Time.deltaTime);
}
else
{
enemyWalking = false;
Debug.Log("¿El enemigo esta andando? = " + enemyWalking);
yield return new WaitForSeconds (waitingTimer);
walkingTimer = walkingCoolDown;
}
}
}
Answer by Naphier · May 13, 2016 at 05:51 PM
This should help.
http://docs.unity3d.com/Manual/DirectionDistanceFromOneObjectToAnother.html
Basically it's just the difference of the go's position and the target position. Oftentimes you'll want to normalize this result to have values between -1 and 1.
Your answer
Follow this Question
Related Questions
Simple 2D movement with animation while you are moving 0 Answers
Player doesn't face in direction of its last movement direction 0 Answers
Sprites moving (shaking) during animation while they should not 1 Answer
Animator setBool NullReference exception while trying to do animation when tap a button 1 Answer