x


zombie ai script

i put the script and attached it to my zombie but when it hits me and applys damage it stops then doesnt chase me. The Attack time starts counting up then doesn't stop please can you help me!!

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
var Damage : float = 0.001;
private var chasing = false;
public var attackTime : float = 10;
var myTransform : Transform; //current transform data of this enemy
 
function Awake(){
   myTransform = transform; //cache transform data for easy access/preformance
}

function Start(){
   if (target == null && GameObject.FindWithTag("Player"))
      target = GameObject.FindWithTag("Player").transform;
}
 
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.SendMessageUpwards("ApplyDamage" , Damage , SendMessageOptions.DontRequireReceiver);
      // 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;
      }
   }
}
more ▼

asked May 08 '12 at 08:44 PM

allenziff gravatar image

allenziff
0 5 7 8

You change the movespeed to 0 when you meet the qualifications but you never turn the movespeed to any other value after the qualifications aren't met.

May 08 '12 at 08:46 PM Silicon

Thankyou, lo0n.

May 08 '12 at 09:06 PM syclamoth

Welcome :)

May 08 '12 at 09:07 PM Lo0NuhtiK

and I don't think you should use "target" variable, instead use the tag player. unless that you are always the only one near the zombies.

Jun 14 '12 at 01:26 AM Estevominador
(comments are locked)
10|3000 characters needed characters left

1 answer: sort voted first

You change the movespeed to 0 when you meet the qualifications but you never turn the movespeed to any other value after the qualifications aren't met.

more ▼

answered May 08 '12 at 08:52 PM

Silicon gravatar image

Silicon
2 1 1

(comments are locked)
10|3000 characters needed characters left
Your answer
toggle preview:

Up to 2 attachments (including images) can be used with a maximum of 524.3 kB each and 1.0 MB total.

Follow this question

By Email:

Once you sign in you will be able to subscribe for any updates here

By RSS:

Answers

Answers and Comments

Topics:

x5088
x1958
x1175
x960
x112

asked: May 08 '12 at 08:44 PM

Seen: 1230 times

Last Updated: Jun 14 '12 at 01:26 AM