- Home /
 
WayPoints mixed with Raycast
I have a problem. I try to make a AI that has a rout, marked with WayPoints. But I also want it to look for the player and as soon as it is near the AI it should hunt it. But when the AI get to far a way from his next WayPoint it goes back there! this is all working fine, but now i try to get a Raycast setup working. I want the AI to hunt the Player only if he can "see" him. this is the code i am using right now. The AI is now only going his path and shows no reaction to the player. can somebody help?
var waypoint : Transform []; var speed : float = 20; private var currentWaypoint : int; var loop : boolean = true; var dist = 60; var hunt = 100; var player : Transform; var hit : RaycastHit; var see: boolean;
 
               function Update () {
 
                if(currentWaypoint < waypoint.length){  
     var target : Vector3 = waypoint[currentWaypoint].position;
     var moveDirection : Vector3 = target - transform.position;
     var distFromPlayer : Vector3 = player.position-transform.position;  
     var velocity = rigidbody.velocity;
     if(moveDirection.magnitude<1){
     currentWaypoint++;
 }
 else if(distFromPlayer.magnitude < dist && see == true){
         velocity = Vector3.zero;
         target = player.position;
         velocity= (player.position-transform.position).normalized * speed;
         if((player.position - waypoint[currentWaypoint].position).magnitude >hunt){
             taget = waypoint[currentWaypoint].position;
             velocity = moveDirection.normalized * speed;
         }
     }
 else{
     velocity = moveDirection.normalized * speed;
 }
 }
 else{
     if(loop){
         currentWaypoint = 0;
     }
     else{
         velocity = Vector3.zero;
     }
     if(Physics.Raycast(transform.position, moveDirection,hit,dist) &&hit.collider.gameObject== player.gameObject){
         see = true;
     }
     }
 rigidbody.velocity = velocity;
 transform.LookAt(target);
  
               }
Answer by efge · Feb 19, 2011 at 12:57 PM
You could attach a sphere collider to the player, set it as a trigger and use the OnTrigger - functions for detection. So you do not need any distance calculation and can easily use layers and tags.
ok, but will that work, if i only wont my ai to hunt my player if there is no object between both
You are right. Now you have to use a Raycast only when a collision with a Trigger occurs to detect visibility.
Your answer