- Home /
Enemy Pathing
I have the following script for the enemies in my game. The problem is, they will mesh with each other when following. How do you get them to keep a certain distance away from each other?
var target : Transform; //the enemy's target
var moveSpeed = 3; //move speed
var rotationSpeed = 3; //speed of turning
var attackThreshold = 3; // 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 > attackTime) {
// Attack! (call whatever attack function you like here)
attackTime = Time.time + attackRepeatTime;
}
} else {
// not currently chasing.
// start chasing if target comes close enough
if (distance < chaseThreshold) {
chasing = true;
}
}
}
Answer by IgorAherne · Jul 18, 2013 at 08:18 PM
attach a second collider on each monster, make it trigger;
if they enter the trigger and their tag is == "monster"
monster.transform.Translate(0.3, 0, 0.3);
something like that. No deltaTime is needed since the check is per fixed time. Resize new colliders to get them further away from each other. You might want to alter the entering monster's speed as well
Your answer
Follow this Question
Related Questions
AI enemy Stuck at corners 2 Answers
Enemy not rotating when inside range 1 Answer
Enemy following the target with ITween 2 Answers
Enemy Follow Script Help 2 Answers