- Home /
transform set for an enemy to follow doesnt work when enemies are spawned
i am making a simple enemy spawn system where i instantiate enemies at predetermined locations using empty game objects so that when they die i can make them spawn again rather than just having a lot of enemies in the scene that will not be usable again. however when i spawn them in the AI doesnt work unless i go into the inspector and add the player as the transform, it does not work if i do it before hand; i assign it but it just doesnt work in game. is there any way to fix this? i tried a few different things like assigning it when the enemy is spawned in the script which didnt work and having the variable on another game object already in the scene and then pulling it out in script which didnt work either because the player had to then be assinged as the transform. i am using this script:
spawn script placed on an empty game object
var dead : boolean = true;
var enemy : Transform;
function Update()
{
if(dead == true)
{
Instantiate(enemy, transform.position, transform.rotation);
dead = false;
}
}
enemy AI script
var player : Transform
var MoveSpeed = 4;
var MinDist = 20;
var maxDist = 60;
var go = GameObject.Find("enemyspawn");
function Update ()
{
transform.LookAt(player);
if(Vector3.Distance(transform.position,player.position) >= MinDist && Vector3.Distance(transform.position,player.position) <= maxDist ){
transform.position += transform.forward*MoveSpeed*Time.deltaTime;
}
}
sorry if its a long question but i couldnt think of a shorter way to explain it lol but it confuses the hell out of me.
Answer by robertbu · Dec 29, 2013 at 05:13 AM
As a prefab, you cannot define links to objects outside the prefab. The way to solve the problem is the same way you handled go:
function Start() {
player = GameObject.Find("Player").transform;
}
If you player is named something other than 'Player', make the appropriate substitution.