Показать сообщение отдельно
Старый 10.07.2011, 18:21   #2
Lestar
Бывалый
 
Аватар для Lestar
 
Регистрация: 24.05.2011
Адрес: Украина,Харьков
Сообщений: 890
Написано 359 полезных сообщений
(для 880 пользователей)
Ответ: Поиск ближайшего объекта по тэгу. Вопрос.

Скопируйте ошибку из консоли и покажите в коде,как вы применяете метод FindClosestEnemy.Чтобы искал постоянно ближайший,нужно в Update искать.И по хорошим делам переписать,чтобы в Update не искать обьекты по тэгу.

Например так

using UnityEngine;
using System.Collections;

public class 
example MonoBehaviour
{
    
GameObject[] gos;
    
GameObject closest;

    
void Start()
    {
        
gos GameObject.FindGameObjectsWithTag("Enemy");
    }

    
GameObject FindClosestEnemy()
    {            
        
float distance Mathf.Infinity;
        
Vector3 position transform.position;
        foreach (
GameObject go in gos)
        {
            
Vector3 diff go.transform.position position;
            
float curDistance diff.sqrMagnitude;
            if (
curDistance distance)
            {
                
closest go;
                
distance curDistance;
            }
        }
        return 
closest;
    }
    
void Update()
    {
        print(
FindClosestEnemy().name);
    }

Мой пример подходит,если у вас количество элеметнов массива gos неизменно.Вывод print в каждом фрейме существенно садит fps.Будте к этому готовы.

P.S. Ну и в добавок я предпочитаю использовать вместо
Vector3 diff go.transform.position position;
 
float curDistance diff.sqrMagnitude
в таком виде
float curDistance=Vector3.Distance(go.transform.position,position
__________________
Нам суждено построить мосты и храмы,которых никогда не существовало и не могло существовать в природе.
(Offline)
 
Ответить с цитированием
Сообщение было полезно следующим пользователям:
Fockerian (11.07.2011)