- Home /
Car AI Avoiding Obstacle
I have an unanswered question about Wheelie problem on wheel collider but i now solve it. But today i want to ask about " How to make Car AI Avoiding Obstacle using Raycast or something like that ? "
So what i mean here is, AI car have 3 raycast (front, left, and right), they'll still moving in waypoint until the front raycast detects a collision. After Front Raycast detects a collision, AI Car move a little bit from waypoint and then activates left and right raycast. If left or right doesn't have any object, AI Car go back to the waypoint.
The point is to make AI Car should not follows the waypoint accurately (they should be a some radius) so the AI couldn't crash or have some spaces when turning
This is the code
function GetWaypoints(){//Start()
var potentialWaypoints : Array = waypointContainer.GetComponentsInChildren(Transform);
waypoints = new Array();
for(var potentialWaypoint : Transform in potentialWaypoints){
if(potentialWaypoint != waypointContainer.transform) waypoints[waypoints.length] = potentialWaypoint;
}
}
function NavigateTowardsWaypoint(){//Update()
var relativeWaypointPosition : Vector3 = transform.InverseTransformPoint(Vector3(waypoints[currentWaypoint].position.x,transform.position.y,waypoints[currentWaypoint].position.z));
var hit : RaycastHit;
// var rnd = Random.insideUnitSphere + transform.position * 4;
if(Physics.Raycast(transform.position,transform.forward,10)){
//var rnd = Random.insideUnitSphere + transform.position;
//inputSteer = relativeWaypointPosition.x / relativeWaypointPosition.magnitude * rnd.x;
if(hit.transform != this.transform)relativeWaypointPosition.x += hit.normal.x;
}
inputSteer = relativeWaypointPosition.x / relativeWaypointPosition.magnitude;
// now we do the same for torque, but make sure that it doesn't apply any engine torque when going around a sharp turn...
if ( Mathf.Abs( inputSteer ) < 0.5 ) {
inputTorque = relativeWaypointPosition.z / relativeWaypointPosition.magnitude - Mathf.Abs( inputSteer );
}else{
inputTorque = 0.0;
}
// this just checks if the car's position is near enough to a waypoint to count as passing it, if it is, then change the target waypoint to the
// next in the list.
if ( relativeWaypointPosition.magnitude < 20 ) {
currentWaypoint ++;
if ( currentWaypoint >= waypoints.length ) {
currentWaypoint = 0;
}
}
}
Thanks for any help
Your answer
Follow this Question
Related Questions
AI create path, help. 1 Answer
Have falling object exit from a collider after collision? 2 Answers
AI Player Jerky Movement - Overcoming Obstacle 0 Answers
Car AI help 0 Answers
AI car Script problem 1 Answer