Unity 3D球跟随手指

时间:2018-08-13 06:50:35

标签: unity3d

我正在尝试创建3D游戏,例如ketchapp球赛,其中立方体沿着道路滑动,并且通过触摸控制左右移动

我面临的问题是触摸灵敏度似乎在不同设备上反应不同,因此我无法计算所有设备的左右位移。 这就是我计算立方体的左右位移的方式:

     Vector2 touchDeltaPosition = Input.GetTouch(0).deltaPosition ;
     transform.Translate(touchDeltaPosition.x * .1f * Time.deltaTime, 0, 0);

但是,这不能在所有设备上正常工作。任何帮助将不胜感激

2 个答案:

答案 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值。