触摸板作为鼠标输入控制

Touch pad as mouse input control

我修改了 Roll-a-Ball tutorial 通过更改这些行来获取触摸板输入而不是控制器输入:

float moveHorizontal = Input.GetAxis ("Horizontal");
float moveVertical = Input.GetAxis ("Vertical");

对此:

float moveHorizontal = Input.GetAxis ("Mouse X");
float moveVertical = Input.GetAxis ("Mouse Y");

这在我的 Macbook 触控板上完美运行,控制非常流畅,但在 Gear VR 触控板上控制非常不稳定。 (例如,球经常向与滑动完全相反的方向移动)

谁能告诉我是否还有其他方法可以使控制更顺畅?

GearVR Unity 中将触摸板作为鼠标的做法具有误导性。当您使用鼠标时,光标位置 (Input.position) 会从一个位置移动到另一个位置 - 但在 GearVR 中,每向下移动 mouse/touch,鼠标就会传送到屏幕中央。您必须使用每个 mousedown 的相对位置,并为您想要的这种行为添加它们。

哦,据我所知,没有办法检查触摸板的哪一部分被用户触摸了——它总是注册为中心,进一步的移动是相对的。

这对我有用:

if(Input.GetAxis("Mouse Y") != 0)
  {
      scrollValue.value += ((Input.mousePosition.y - 720) / 720);
  }

它通过检查鼠标 Y 轴来检查用户是否试图滚动触摸板,然后将滚动条值增加鼠标位置相对于触摸板始终重置到的默认起始位置(即 y=720 ) 而不是使用鼠标 Y 轴值。如果你想水平滚动你会想要使用 x 而不是 y 并将 720 更改为 1280 因为这是触摸板使用的默认 x 位置。