获取3D对象在另一个对象之后的2D位置?

时间:2019-05-23 12:35:06

标签: c# unity3d

当该对象跟随另一个3D对象时,如何获得3D对象的2D位置(即z轴应为0)?

到目前为止,我已经尝试了下面的一行代码,但是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 个答案:

答案 0 :(得分:1)

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;

答案 1 :(得分:1)

您只需将位置放在局部变量中,然后将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;
}