Получить 2D-положение 3D-объекта, когда он следует за другим объектом? - PullRequest
0 голосов
/ 23 мая 2019

Как получить 2D-положение 3D-объекта (т. Е. Ось z должна быть 0), когда этот объект следует за другим 3D-объектом?

До сих пор я пробовал приведенный ниже однострочный код, но zось не остается 0, поскольку она следует за другим объектом, который продолжает колебаться.Какие-нибудь решения?

public GameObject Car;
public GameObject Icon;

// Update is called once per frame
void Update () 
{
    Icon.transform.position = Vector3.MoveTowards(Car.transform.position, Car.transform.position, 0);
}

Ответы [ 2 ]

1 голос
/ 23 мая 2019

Вы просто помещаете позицию в локальную переменную и устанавливаете z в 0.

public GameObject Car;
public GameObject Icon;

// Update is called once per frame
void Update () {
    Vector3 pos3d = Car.transform.position;
    pos3d.z = 0;
    Icon.transform.position = pos3d;
}
1 голос
/ 23 мая 2019
Icon.transform.position = Vector3.MoveTowards(Car.transform.position, Car.transform.position, 0);

это абсолютно ничего не делает ... во-первых, вы перемещаетесь между одними и теми же позициями, а во-вторых, со скоростью = 0 ... так что в основном это равно

Icon.transform.position = Car.transform.position;

Вместо этого вы хотели удалить z компонент вектора позиции, например, что-то вроде

Icon.transform.position = new Vector3(Car.transform.position.x, Car.transform.position.y, 0);

или небольшую хитрость: вы можете ввести его в Vector2, что заставит его «забыть»значение z.Затем он косвенно возвращается к Vector3 с z=0

Icon.transform.position = (Vector2) Car.transform.position;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...