- Home /
This question was
closed Dec 04, 2016 at 06:11 PM by
kunald.
Unity2D Check which direction the enemy AI is heading?
Hey I need assistance figuring out which way my AI is going so I can rotate the vehicle if needed.
I tired to us xDir and yDir. The xDir script works great but the yDir script is funky and making the vehicle rotate when going in the x direction.
Here is my code:
using UnityEngine;
using System.Collections;
public class AICarScript : MonoBehaviour {
public Transform[] waypoints;
int cur = 0;
public float speed = 0.3f;
// Use this for initialization
void Start () {
}
void CheckDirection()
{
//Declare x and y movement variables. Ranges from -1 to 1
int xDir = 0;
int yDir = 0;
yDir = waypoints[cur].position.y > transform.position.y ? 1 : -1;
xDir = waypoints[cur].position.x > transform.position.x ? 1 : -1;
//Check if the car is going left or right
if (xDir == 1)
{
GetComponent<SpriteRenderer>().flipX = true;
//GetComponent<Rigidbody2D>().rotation = 0;
}
else if (xDir == -1)
{
GetComponent<SpriteRenderer>().flipX = false;
//GetComponent<Rigidbody2D>().rotation = 0;
}
//Check if the car is going up and down
if (yDir == 1)
{
GetComponent<Rigidbody2D>().rotation = 90;
}
else if (yDir == -1)
{
GetComponent<Rigidbody2D>().rotation = -90;
}
else if (yDir == 0)
{
GetComponent<Rigidbody2D>().rotation = 0;
}
}
// Update is called once per frame
void Update () {
//Waypoint not reached yet? Move towards it
if (transform.position != waypoints[cur].position)
{
Vector2 p = Vector2.MoveTowards(transform.position, waypoints[cur].position, speed);
GetComponent<Rigidbody2D>().MovePosition(p);
CheckDirection();
}
///Waypoint reached
else cur = (cur + 1) % waypoints.Length;
}
bool valid(Vector2 dir)
{
Vector2 pos = transform.position;
RaycastHit2D hit = Physics2D.Linecast(pos + dir, pos);
return (hit.collider == GetComponent<Collider2D>());
}
}
Comment
Answer by fafase · Dec 04, 2016 at 09:33 AM
Since you are using the rigidbody you can look at
rigidbody.velocity;
Follow this Question
Related Questions
Find turning radius with torque 0 Answers
vehicle mesh gets trapped inside terrain mesh when collided 0 Answers
Enemies Follow Player2 0 Answers
Making an AI Flee 2 Answers
unity 2d: scaling sprites problem. 1 Answer