- Home /
ZOMBIE AI SCRIPT
Hello. This is my current Zombie AI but it just going through walls and fly. How can i fix this ?
 var target : Transform; //the enemy's target
 var moveSpeed = 3; //move speed
 var rotationSpeed = 3; //speed of turning
 var attackThreshold = 1.5; // distance within which to attack
 var chaseThreshold = 10; // distance within which to start chasing
 var giveUpThreshold = 20; // distance beyond which AI gives up
 var attackRepeatTime = 1; // delay between attacks when within range
 
 private var chasing = false;
 private var attackTime = Time.time;
 
 var myTransform : Transform; //current transform data of this enemy
 
 function Awake()
 {
     myTransform = transform; //cache transform data for easy access/preformance 
 }    
 
 function Start()
 {
      target = GameObject.FindWithTag("Player").transform; //target the player
 }
 
 function Update (){    
     // check distance to target every frame:
     var distance = (target.position - myTransform.position).magnitude;
 
     if (chasing) {    
         //rotate to look at the player
         myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
         Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
 
         //move towards the player
         myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
 
         // give up, if too far away from target:
         if (distance > giveUpThreshold)
             chasing = false;
 
         // attack, if close enough, and if time is OK:
         if (distance < attackThreshold && Time.time > attackRepeatTime) {
             target.SendMessage("ApplyDamage",10);
             // Attack! (call whatever attack function you like here)
         }
         if (distance < attackThreshold) {
             moveSpeed=0;
             //stop when close enough
         }
 
             attackTime = Time.time+ attackRepeatTime;
         }
 
     else {
         // not currently chasing.
 
         // start chasing if target comes close enough
         if (distance < chaseThreshold) {
             chasing = true;
         }
     }    
 }
 
 function OnTriggerEnter (other: Collider) {
     if (other.gameObject.CompareTag("Bullet")){
         chaseThreshold=100000000;
     }
 }
Please Help
//SLIMEBASS
Answer by Berenger · Jun 24, 2012 at 06:30 PM
Modifications of transform.position do not apply with physic. You need to use a character controller or a rigidbody, then move it with Move or AddForce.
This is maby an stupid question.. But can u edit the script so its work with rigidbody please? :) Im new to Scripting :D WOULD BE AWESO$$anonymous$$E
//SLI$$anonymous$$EBASS
The only relevant part is
 //move towards the player
 myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime
which should be
 //move towards the player
 myRigidbody.AddForce( myTransform.forward * moveSpeed * Time.deltaTime );
im attempting to use this script and i get the error: $$anonymous$$ identifier: 'myRigidbody'. Do I need to define it somewhere else or change other parts of the script? thanks.
Your answer
 
 
             Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Zombie attack script help 1 Answer
What Am I Doing Wrong? 1 Answer
Need help with javascript AI 1 Answer
Enemy AI problems & Tree problems 0 Answers
 koobas.hobune.stream
koobas.hobune.stream 
                       
                
                       
			     
			 
                