销毁 GetMouseButtonDown 事件和位置或强制 mousebuttonup
Destroy GetMouseButtonDown event and position or force mousebuttonup
当我 运行 我的应用程序在 Android 上时,第一个手指触摸调用 Input.GetMouseButtonDown(0)
第二次触摸调用 Input.GetMouseButtonDown(1)
。
在某些情况下,我想覆盖 GetMouseButtonDown(0)
- 所以第二根手指 (1) 触摸将成为第一根 (0),我不知道该怎么做。
无论是这个还是如何在第一次手指触摸时强制 mouseButtonUp
- 我想从系统中删除第一个 "click" 这样它就不会在 2 次触摸的情况下使用 Input.mousePosition
。
为什么?
当用户可以画线时,我正在创建一个绘画应用程序。
有一个用户可以绘画的区域(在一个矩形中)和一个他不应该绘画的区域,我知道如何检测何时按下不需要的区域。
但有时我的手掌会在不需要的区域(没有 Input.GetMouseButtonUp(0)
)和当我开始画线时产生不需要的第一次触摸 Input.GetMouseButtonDown(0)
Input.mousePosition
获取两次触摸的平均值,所以我只想要一种从系统中删除 "down" touch/click 的方法。或者用其他方法解决我的问题。
这是我的代码:
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))
{...}
在移动设备上工作以检测屏幕上的触摸而不点击任何对象时,您应该使用 Input.touchCount
和 Input.GetTouch
或 Input.touches
。尽管我强烈推荐 Input.GetTouch
,因为它甚至不会像 Input.touches
这样分配临时变量。要获得触摸使用的位置,Input.GetTouch(index).position
.
这些功能中的每一个 returns Touch
so you can use Touch.fingerId
到 detect/keep 跟踪您同时需要多少次触摸。您还可以使用传递给 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
来限制它。实施取决于您想要什么。
当我 运行 我的应用程序在 Android 上时,第一个手指触摸调用 Input.GetMouseButtonDown(0)
第二次触摸调用 Input.GetMouseButtonDown(1)
。
在某些情况下,我想覆盖 GetMouseButtonDown(0)
- 所以第二根手指 (1) 触摸将成为第一根 (0),我不知道该怎么做。
无论是这个还是如何在第一次手指触摸时强制 mouseButtonUp
- 我想从系统中删除第一个 "click" 这样它就不会在 2 次触摸的情况下使用 Input.mousePosition
。
为什么?
当用户可以画线时,我正在创建一个绘画应用程序。
有一个用户可以绘画的区域(在一个矩形中)和一个他不应该绘画的区域,我知道如何检测何时按下不需要的区域。
但有时我的手掌会在不需要的区域(没有 Input.GetMouseButtonUp(0)
)和当我开始画线时产生不需要的第一次触摸 Input.GetMouseButtonDown(0)
Input.mousePosition
获取两次触摸的平均值,所以我只想要一种从系统中删除 "down" touch/click 的方法。或者用其他方法解决我的问题。
这是我的代码:
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))
{...}
在移动设备上工作以检测屏幕上的触摸而不点击任何对象时,您应该使用 Input.touchCount
和 Input.GetTouch
或 Input.touches
。尽管我强烈推荐 Input.GetTouch
,因为它甚至不会像 Input.touches
这样分配临时变量。要获得触摸使用的位置,Input.GetTouch(index).position
.
这些功能中的每一个 returns Touch
so you can use Touch.fingerId
到 detect/keep 跟踪您同时需要多少次触摸。您还可以使用传递给 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
来限制它。实施取决于您想要什么。