- Home /
How to make an enemy stay behind you
I wanted to make an endless runner game, but i have a little problem. I never tried to make a game like this one, and i am kinda new, so i wanted to do a game like this so i can "gain some experience" with lots of things, but i am stuck in the enemy.
Most endless runners give you a second chance when you almost hit something or dodge an obstacle immediately after being hit by it. I wanted to make a giant flaming ball that i have here to go after the player for 7 seconds, but ONLY in a specific place. Like, it rotates forward and follow the player, but only stay a few meters from it, without actually hitting the player. Could someone help me on this? It would help a lot, because i don't know much about scripting yet, and i am just a beginner in AI.
I made a script that make an object follow the player, but i don't know what to change in the script so it makes what i want. #pragma strict
var Player : Transform;
var MoveSpeed = 4;
var MaxDist = 10;
var MinDist = 5;
function Start ()
{
}
function FixedUpdate ()
{
transform.LookAt(Player);
if(Vector3.Distance(transform.position,Player.position) >= MinDist){
transform.position += transform.forward*MoveSpeed*Time.deltaTime;
if(Vector3.Distance(transform.position,Player.position) <= MaxDist)
{
//Here Call any function U want Like Shoot at here or something
}
}
}
It follows the player, and you can set the enemy's speed, minimum and max distance to detect and follow the player.
Ins$$anonymous$$d of using the player's position as a target, make the enemy follow a point behind the player.
Transform behind_player = Player.position - Player.forward * 5.0f; // position 5m behind player
Answer by Al0022 · Oct 30, 2016 at 07:52 AM
pragma strict
var target : Transform; var moveSpeed = 5; var rotationSpeed = 5; var myTransform : Transform;
function Awake () { myTransform = transform; }
function Start () { target = GameObject.FindWithTag("Player").transform; }
function Update () { var dist = Vector3.Distance(target.position, myTransform.position); var lookDir = target.position - myTransform.position; lookDir.y = 0;
if(dist < 10){
myTransform.rotation = Quaternion.Slerp( myTransform.rotation,
Quaternion.LookRotation(lookDir), rotationSpeed*Time.deltaTime );
if(dist > 3){
myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime;
}
}
}