# How to determine if an Enemy is moving left or right?

First, here’s the code

using UnityEngine;
using System.Collections;

public class BMoveAI : MonoBehaviour
{
public Vector2 pos1;
public Vector2 pos2;
public float speed;

void Update()
{
transform.position = Vector3.Lerp (pos1, pos2, Mathf.PingPong (Time.time * speed, 1.0f));
}
}

So what I’m trying to do is make my Enemy’s sprite flip depending on whether he is moving left or right. So my question is how I would detect moving left or right?

You can also try this one

public float oldPosition;
public bool movingRight = false;
public bool movingLeft = false;

void LateUpdate(){
oldPosition = transform.position.x;
}

void Update () {

if (transform.position.x > oldPosition) {
movingRight = true;
movingLeft = false;
}
if (transform.position.x < oldPosition) {
movingRight = false;
movingLeft = true;
}

You could store your character’s Y position in a variable, and then in the next frame check whether the new position is smaller or greater than the last one.
(Assuming Y axis is your horizontal, and it’s that way ->)
You might need to swap left and right depending on what your sprite looks like.

using UnityEngine;
using System.Collections;

private float oldPosition = 0.0f

public class BMoveAI : MonoBehaviour
{
public Vector2 pos1;
public Vector2 pos2;
public float speed;

void Start()
{
oldPosition = transform.position.y;
}

void Update()
{
transform.position = Vector3.Lerp (pos1, pos2, Mathf.PingPong (Time.time * speed, 1.0f));

if (transform.position.y > oldPosition) // he's looking right
{
transform.localRotation = Quaternion.Euler(0, 0, 0);
}

if (transform.position.y < oldPosition) // he's looking left
{
transform.localRotation = Quaternion.Euler(0, 180, 0);
}
oldPosition = transform.position.y; // update the variable with the new position so we can chack against it next frame
}
}