Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #pragma strict
- 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;
- public var attackTime : float;
- 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;
- animation.Play("ZombieWalk");
- // 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) {
- animation.Play("ZombieAttack");
- 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.
- animation.Play("ZombieIdle");
- // start chasing if target comes close enough
- if (distance < chaseThreshold) {
- chasing = true;
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement