【发布时间】:2015-12-22 07:49:32
【问题描述】:
我有一个脚本,通过使用鼠标中键来控制 Unity 中的正交相机平移运动。位于世界中心 (0,0,0) 的空游戏对象(例如名称为 MainCamPivot(请参见图片))充当相机的父对象。相机本身具有 Vector3(45f, 225f, 0f) 的局部欧拉角。使用此脚本(附加到相机),我可以很好地在 X 和 Y 轴上平移/移动相机:
public float panSpeed = 0.05f;
private Vector3 lastMousePos;
void Start ()
{
lastCamPos = transform.position;
}
void Update()
{
if(Input.GetMouseButtonDown(2))
{
lastMousePos = Input.mousePosition;
}
if(Input.GetMouseButton(2))
{
Vector3 touchDeltaPosition = Input.mousePosition - lastMousePos;
transform.Translate(-touchDeltaPosition.x * panSpeed, -touchDeltaPosition.y * panSpeed, 0);
lastMousePos = Input.mousePosition;
}
// To limit the orthographic camera panning movement:
if(transform.localPosition.x < 10f) transform.localPosition = new Vector3(10f, transform.localPosition.y, 16.3f);
if(transform.localPosition.x > 23f) transform.localPosition = new Vector3(23f, transform.localPosition.y, 16.3f);
if(transform.localPosition.y < 15f) transform.localPosition = new Vector3(transform.localPosition.x, 15f, 16.3f);
if(transform.localPosition.y > 28f) transform.localPosition = new Vector3(transform.localPosition.x, 28f, 16.3f);
}
为了限制相机平移运动,我为相机的 X 和 Y 位置设置了一些限制。问题是相机的Z位置值总是在变化,所以给相机的Z位置设置一个固定的位置会使相机像下图那样对角平移/移动:
使用脚本正确限制正交相机平移运动的最佳方法是什么? (如下图)
【问题讨论】:
-
删除我的答案,我意识到你已经在玩本地位置了。
-
你解决了吗?尝试使用两个枢轴,一个具有脚本,另一个反映 z 变化。我为我的一个项目做了这样的事情。
标签: c# unity3d game-engine orthographic