在我的代码中,我在LateUpdate
函数中有以下几行:
if (!EventSystem.current.IsPointerOverGameObject())
{
if (Input.touchCount == 2 && Input.GetTouch(0).phase == TouchPhase.Moved && Input.GetTouch(1).phase == TouchPhase.Moved)
{
float dot = Vector2.Dot(Input.GetTouch(0).deltaPosition.normalized, Input.GetTouch(1).deltaPosition.normalized);
if (dot < fingerSepValue )
{
CameraZoom();
}
else
{
MoveCamera();
}
}
if (Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)
{
var touchDeltaPosition = CameraOrbit();
}
}
此代码仅在用户未触及UI图层时运行。这在我的Unity项目中工作得很好,但是当我构建到iPad时,无论我在屏幕上触摸的位置(无论是UI还是其他),相机移动代码都会被调用。
有谁知道这个的原因?难道我做错了什么?
答案 0 :(得分:0)
您可以使用IPointerDownHandler,IPointerUpHandler等事件执行相同的操作。然后你必须将Physics Raycaster添加到相机并与包含脚本的游戏对象相撞。或者,如果必须使用IsPointerOverGameObject http://forum.unity3d.com/threads/touch-press-pass-through-all-ui-elements.272892/
,您可以在此处寻找解决方案