我正在尝试创建3D游戏,例如ketchapp球赛,其中立方体沿着道路滑动,并且通过触摸控制左右移动
我面临的问题是触摸灵敏度似乎在不同设备上反应不同,因此我无法计算所有设备的左右位移。 这就是我计算立方体的左右位移的方式:
Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition ;
transform.Translate(touchDeltaPosition.x * .1f * Time.deltaTime, 0, 0);
但是,这不能在所有设备上正常工作。任何帮助将不胜感激
答案 0 :(得分:3)
查看此答案:https://stackoverflow.com/a/25740565/10063126
基本上,使用了 ScreenToWorldPoint 。
计算世界位置;不是屏幕触摸位置。
但是您必须手动求解增量位置。
示例:
Vector3 currPos = Input.mousePosition;
Vector3 startPos = Camera.main.ScreenToWorldPoint(currPos);
Vector3 endPos = Camera.main.ScreenToWorldPoint(prevPos);
Vector3 deltaPos = endPos - startPos;
transform.Translate(deltaPos.x * sensitivity * Time.deltaTime, 0, 0);
prevPos = currPos;
答案 1 :(得分:0)
如何在屏幕上使用两个按钮,一个用于左控制,一个用于右控制,然后在按下左按钮时,您可以给定一个值,即左移,而右按钮则相同。这样,您的球的移动将独立于触摸位置的X值。