- Home /
how to make an ai car follow player car
Hey everyone, I am making a car game, where you can drive around a city, I am using the seeksteer script for my ai cars. As this script works using waypoints, i am finding it difficult to find a way to make the ai car follow the player around (basically this ai script will be applied to a police car, which will chase the player around the city), the seeksteer script looks like this:
//SeekSteer.js
var waypoints : Transform[]; var waypointRadius : float = 1.5; var damping : float = 0.1; var loop : boolean = false; var speed : float = 2.0; var faceHeading : boolean = true;
private var targetHeading : Vector3; private var currentHeading : Vector3; private var targetwaypoint : int; private var xform : Transform; private var useRigidbody : boolean; private var rigidmember : Rigidbody;
// Use this for initialization function Start() { xform = transform; currentHeading = xform.forward; if(waypoints.Length<=0) { Debug.Log("No waypoints on "+name); enabled = false; } targetwaypoint = 0; if(rigidbody!=null) { useRigidbody = true; rigidmember = rigidbody; } else { useRigidbody = false; } }
// calculates a new heading function FixedUpdate() { targetHeading = waypoints[targetwaypoint].position - xform.position;
currentHeading = Vector3.Lerp(currentHeading,targetHeading,damping*Time.deltaTime);
}
// moves us along current heading function Update(){
if(useRigidbody)
rigidmember.velocity = currentHeading * speed;
else
xform.position +=currentHeading * Time.deltaTime * speed;
if(faceHeading)
xform.LookAt(xform.position+currentHeading);
if(Vector3.Distance(xform.position,waypoints[targetwaypoint].position)<=waypointRadius)
{
targetwaypoint++;
if(targetwaypoint>=waypoints.Length)
{
targetwaypoint = 0;
if(!loop)
enabled = false;
}
}
}
// draws red line from waypoint to waypoint function OnDrawGizmos(){
Gizmos.color = Color.red;
for(var i : int = 0; i< waypoints.Length;i++)
{
var pos : Vector3 = waypoints[i].position;
if(i>0)
{
var prev : Vector3 = waypoints[i-1].position;
Gizmos.DrawLine(prev,pos);
}
}
}
Also, I didn't want to put the script that allows the driver to drive their car because then this question might be a bit too long... But if anyone would like, i can post the player car script, because i was wondering if anyone could provide a good script for allowing a player to drive a car, because the one that i got at the moment is not the best...
Many Thanks
-Grady
Answer by Muzz 1 · Apr 30, 2011 at 09:53 AM
IDEA 1 : I'm coming to the conclusion that I don't like SeekSteer. It adds external forces, and so isn't great. However...if you want to use it, then why not put one waypoint at the start, and the other as a child of the player car? Then it should drive towards the player car. (I haven't tested this, so it might be wrong.) Idea 2 : Why not use pathfinding (check the forums for A*, search 'path' in the asset store). That will find a path to the car, so it'll go around buildings!
yeah, i tried that, but then the car goes directly towards the player car, and doesn't go around buildings or anything... do you know a better ai script? or maybe a way to make the player car spawn waypoints behind it for the car to follow or something....?
That second one sounds like a pretty good idea, but it would be hard to then make them pick those up and use them as waypoints. I've had another idea ... look at my post!
when you say it'll follow the path, does that mean i can have my player car create that path, or do i have to pre make the path for the car to follow...? Thanks!
It'll calculate a path around the buildings to the player car. It will then go along this path. (Hint: press upvote or accept!)
Your answer
Follow this Question
Related Questions
car follow ai 1 Answer
How can I make the CarController (a gameobject) follow my currentCar 0 Answers
unitysteer with car model and ai 1 Answer
Following AI - Similar to Snake Game 2 Answers