我怎么能只拿一个手指转弯输入



我的项目是一个Runner游戏,角色不断向前移动,如果玩家向左或向右滑动,角色也会移动那个位置。但在手机中,如果我用一个手指滑动,同时用另一个手指触摸,角色就会开始接受两个输入并移动错误的方向。

这是我下面的代码:

private void Update(){
float newz = transform.position.z + movementSpeed * Time.deltaTime;
float newx = 0, swipeDelta = 0;

if(Input.touchCount == 1 && Input.GetTouch(0).phase == TouchPhase.Moved)
{
swipeDelta = Input.GetTouch(0).deltaPosition.x / Screen.width;
}
newx = transform.position.x + swipeDelta * 5f *Time.deltaTime;
transform.position = new Vector3(newx, transform.position.y, newz);
}

我已经将Input.touchCount设置为1,因为我希望它只获得1个手指输入,但它不起作用。我应该怎么做才能让它用一根手指工作并准确无误?

从您的代码中,似乎只要您用第二根手指触摸,它就不会读取第一根手指的位置。

Input.touchCount==1在您的if语句中,这对我来说是个问题,这意味着只有当您的屏幕上只有一根手指时,if语句才会执行。如果将其更改为Input.touchCount>0即使屏幕上有更多的手指,它也会执行,并且应该正常工作,因为您已经使用输入只进行了一次输入。GetTouch(0(.

private void Update(){
float newz = transform.position.z + movementSpeed * Time.deltaTime;
float newx = 0, swipeDelta = 0;

if(Input.touchCount > 0 && Input.GetTouch(0).phase == TouchPhase.Moved)
{
swipeDelta = Input.GetTouch(0).deltaPosition.x / Screen.width;
}
newx = transform.position.x + swipeDelta * 5f *Time.deltaTime;
transform.position = new Vector3(newx, transform.position.y, newz);
}

Input.touchCount == 1更改为Input.touchCount > 0并不能解决我的问题。我通过在PlayerController脚本的Start函数中添加这行代码解决了这个问题:

Input.multiTouchEnabled = false;

最新更新