- Home /
AI car Issue!
Hello, I'm building a racing car game and I'm using waypoints and the seeksteer.js script to make the AI cars move towards the waypoints that i have made on the track, but the car is following only the first few waypoints and then it returns back sometimes and other times it behaves in an unexpected manner. Any siggestions to where or what I can do to solve this issue?
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);
}
}
}
Answer by RetepTrun · Feb 20, 2013 at 08:25 PM
I think I tried that script from the wiki awhile ago and it worked ok.
Perhaps rename all waypoints clearly to make sure nobody is double counted, and they are all in the right order. name them wpt1, wpt2..... in the order they are to be followed.
Also lay them out on a flat place to make sure its not just the car doesnt have the power to make it uphill.
Your answer
Follow this Question
Related Questions
How to detect player car overtake of other cars 1 Answer
A game like Need For Speed? 1 Answer
How can I create a single car with different settings? 0 Answers
Mobile optimised simple car physics? Any recommendation? 0 Answers
Car Gearbox script 1 Answer