【发布时间】:2018-03-05 02:52:33
【问题描述】:
我正在尝试将角色从屏幕边缘传送到我正在使用的相反边缘:
var pos: Vector3 = Camera.main.WorldToViewportPoint(transform.position);
if (pos.x < 0.0) {
pos = new Vector3(0.0, 0.0, 0.0);
transform.position = pos;
//Debug.Log("I am left of the camera's view.");
}
if (1.0 < pos.x) {
pos = new Vector3(0.0, 0.0, 0.0);
transform.position = pos;
// Debug.Log("I am right of the camera's view.");
}
if (pos.y < 0.0) Debug.Log("I am below the camera's view.");
if (1.0 < pos.y) Debug.Log("I am above the camera's view.");
这工作完美,但问题是它将角色传送到中心,当我更改值以使其传送到边缘时,它无法正常工作
【问题讨论】:
-
这是因为第一行中的
pos被“翻译”到视口空间,但您设置的位置是在世界空间中(0,0,0 是场景的中心),您只需要将新坐标“平移”到“另一个方向”,即从视口到世界空间。 -
@yes 我知道那是中心,当我将值设置到边缘时会发生什么情况它不起作用我到底应该改变什么?
-
在设置位置之前使用
Camera.ViewportToWorldPointdocs.unity3d.com/ScriptReference/… -
@yes 所以我必须使用 ViewToWorldPoint 而不是 WorldToviewPoint
-
不,您设置的位置需要在世界空间中。
标签: unity3d unityscript