@Zimaell

Как задать координаты движения юниту?

Мне нужно поставить юнита на определенные координаты и передать ему значение куда ему идти
public class Unit : MonoBehaviour{ // прикреплен к префабу
    public Vector3 EndPoint;
    private float speed = 2f;
 
    void Start(){
        //EndPoint= new Vector3(15, 0, 15);
        }
 
    void Update(){
        transform.position = Vector3.MoveTowards(transform.position, EndPoint, speed*Time.deltaTime);
        }
    }
 
public class Spawn : MonoBehaviour{
 
  void Start(){
    SpawnUnit();
    }
 
  void SpawnUnit(){
    Unit Prefab = Resources.Load("Units/unit1", typeof(Unit)) as Unit;
    Instantiate(Prefab, new Vector3(5, 0, 5), Quaternion.identity);
    Prefab.EndPoint = new Vector3(15, 0, 15);
    }
  }

Но он не идет к заданным координатам, он идет в другую сторону на пару клеток.
Если убрать Prefab.EndPoint = new Vector3(15, 0, 15); и раскомментировать EndPoint= new Vector3(15, 0, 15); то идет туда куда нужно.
Но в теории я и так передаю ему координаты Prefab.EndPoint = .... , почему так не работает?
  • Вопрос задан
  • 116 просмотров
Решения вопроса 1
freeExec
@freeExec
Участник OpenStreetMap
Unit Prefab = Resources.Load - это ссылка на ресурс, в нём по-уму ничего в рантайме менять не нужно.
Instantiate - а вот тут была бы ссылка на объект в сцене, которому и надо задавать параметры. Но вы эту ссылку не сохраняете.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы