Unity C#ScreenToWorldPoint 2D设置对象Z轴

时间:2016-09-28 18:45:23

标签: c# unity3d touch

touchMarkerObjects[fingerId].transform.position = mainCamera.ScreenToWorldPoint(Input.GetTouch(fingerId).position);

当我使用这行代码时,它将touchMarkerObjects Z位置设置为-1308,这使得它无法渲染。相机位于0,0,0并设置为正交。即使我在Vector3中添加一行或尝试仅使用Vector3中的ScreenToWorldPoint的X / Y进行transform.position更改,它仍将值设置为-1308。

如何在不影响Z索引的情况下更新对象位置?

谢谢,我确定这是一个我忽略的相对简单的事情。我希望这是传达问题的最简单方法。

1 个答案:

答案 0 :(得分:0)

一开始,获取GameObject的默认z轴。 将值mainCamera.ScreenToWorldPoint(Input.GetTouch(fingerId).position);保存到临时变量。在使用之前用原始/默认变量覆盖结果的z轴。如果GameObjects的z轴为0,则只需使用0覆盖它。

float defaultZ = 0f;

或者

float defaultZ = touchMarkerObjects[...].transform.position.z;

然后

Vector3 tempValue = mainCamera.ScreenToWorldPoint(Input.GetTouch(fingerId).position);
tempValue.z = defaultZ;
touchMarkerObjects[fingerId].transform.position = tempValue;