This script essentially allows the player to be followed by another "enemy" object. It's a .js you need to attach to your GameObject to instantiate.
- var closeEnoughDistance = 1; // stop moving once we get this close to the target
- 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 (distance < closeEnoughDistance)
- {
- animation.Play("ZombieAttack");
- }
- if (chasing)
- {
- //rotate to look at the player
- myTransform.rotation = Quaternion.Slerp(myTransform.rotation,
- Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime);
- // give up, if too far away from target:
- if (distance > giveUpThreshold)
- {
- chasing = false;
- }
- else if (distance > closeEnoughDistance)
- {
- myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
- }
- else if (distance < attackThreshold && Time.time > attackRepeatTime)
- {
- target.SendMessage("ApplyDamage",10);
- }
- attackTime = Time.time+ attackRepeatTime;
- }
- else
- {
- // not currently chasing.
- // start chasing if target comes close enough
- if (distance < chaseThreshold)
- {
- chasing = true;
- }
- }
- }
:D THANKS!
ReplyDelete