- Home /
Problem is not reproducible or outdated
Look at closer to player
how i can look at closer to you, i want gameobject like box look at to some object like sphere, imagine is : 1 box as player, 5 sphere as enemy, i want to make player to look at enemy(just one enemy), but closer to player. And if the enemy go away, the player still look at to enemy but still look at closer to player, thanks
GameObject[] Enemys;
public float[] Distance;
void Start ()
{
}
void Update ()
{
//Distance[] = Vector3.Distance(this.transform.position, Enemys[].transform.position); this wrong,
Enemys = GameObject.FindGameObjectsWithTag("Enemy");
//transform.LookAt(Enemys); this is wrong, but this was all I can do
//please help
}
Answer by Matt1000 · Mar 22, 2017 at 05:52 PM
The problem is that you are using methods which work for one gameobject with many of them. You should try something like this:
GameObject[] enemies;
GameObject closerEnemy;
float[] distances;
float closerDistance;
void Update () {
enemies = GameObject.FindObjectsWithTag ("Enemys");
if (enemies.Lenght > 0) {
for (int i = 0; i < enemies.Length; i++) {
distance[i] = Vector3.Distance (transform.position, enemies[i].transform.position);
}
closerDistance = distances [0];
closerEnemy = enemies [0];
for (int i = 0; i < distances.Lenght; i++) {
if (distances [i] < closerDistance) {
closerDistance = distances [i];
closerEnemy = enemies [i];
}
}
transform.LookAt (closerEnemy);
}
}
sorry, its not working, i think the problem here
distances[i] = Vector3.Distance(transform.position, enemies[i].transform.position);
distances[] can't read enemy position,
write after this enemies = GameObject.FindObjectsWithTag ("Enemys");
line the foollowing:
Debug.Log (enemies [0].name);
And make sure that the tag you are using ("Enemys") is ok... perhaphs you need to change it to "Enemy". Should work.