当我在Android上运行我的应用时,第一个手指触摸调用Input.GetMouseButtonDown(0)
第二次触摸调用Input.GetMouseButtonDown(1)
。
我想在某些情况下覆盖GetMouseButtonDown(0)
- 所以第二个手指(1)触摸将成为第一个(0),我不知道该怎么做。
这个或如何在第一次手指触摸时强制mouseButtonUp
- 我想从系统中删除第一个“点击”,因此在2次触摸的情况下它不会使用Input.mousePosition
。
为什么呢?
当用户可以绘制线条时,我正在创建一个绘图应用程序。
用户可以绘制一个区域(在一个矩形中)和一个他不应该绘制的区域,我知道在按下不需要的区域时如何检测。
但是有时我的手掌会在不需要的区域(不Input.GetMouseButtonDown(0)
)上创建不需要的第一次触摸Input.GetMouseButtonUp(0)
,当我开始绘制一条线时
Input.mousePosition
获得两次触摸的平均值,因此我只想要一种方法从系统中删除“向下”触摸/点击。或者另一种解决我问题的方法。
这是我的代码:
if (Input.touchCount == 0)
{ screenPoint = new Vector3(0, 0, 0);
currentTouch = 4; //currentTouch is for GetMouseButtonUp(currentTouch) }
for (int i=0; i< Input.touchCount; i++)
{
touch = Input.GetTouch(i);
screenPointTemp = touch.position;
screenPointTemp3 = new Vector3(screenPointTemp.x, screenPointTemp.y, zCam);
//if the touch is in a "good" zone-
if (Camera.main.ScreenToWorldPoint(screenPointTemp3).z > BottomNod.transform.position.z - nodeScale)
{
screenPoint = touch.position;
currentTouch = i;
}
}
}
if (Input.GetMouseButtonUp(currentTouch))
{...}
答案 0 :(得分:1)
当您使用移动设备检测屏幕上的触摸而不点击任何对象时,您应该Input.touchCount
使用Input.GetTouch
或Input.touches
。虽然我强烈推荐Input.GetTouch
,因为它甚至不会分配像Input.touches
这样的临时变量。要获得触摸使用的位置,Input.GetTouch(index).position
。
这些功能中的每一个都会返回Touch
,因此您可以使用Touch.fingerId
来同时检测/跟踪您想要的触摸次数。您还可以使用传递到Input.GetTouch
的索引来跟踪触摸。这完全取决于你。
这会在移动设备上检测每次触摸,移动和向上移动:
for (int i = 0; i < Input.touchCount; ++i)
{
//Touch Down
if (Input.GetTouch(i).phase == TouchPhase.Began)
{
}
//Touch Moved
if (Input.GetTouch(i).phase == TouchPhase.Moved)
{
}
//Touch Up
if (Input.GetTouch(i).phase == TouchPhase.Ended)
{
}
}
仅限一次触摸(使用索引0):
if (Input.touchCount == 1)
{
//Touch Down
if (Input.GetTouch(0).phase == TouchPhase.Began)
{
}
//Touch Moved
if (Input.GetTouch(0).phase == TouchPhase.Moved)
{
//Draw?
}
//Touch Up
if (Input.GetTouch(0).phase == TouchPhase.Ended)
{
}
}
就像我说的那样,你可以用fingerId
来限制它。实施取决于您想要的确切内容。