我的專案是一個 Runner 游戲,其中角色不斷向前移動,如果玩家向左或向右滑動,角色也會移動該位置。但是在移動設備中,如果我用一根手指滑動并同時用另一根手指觸摸,角色開始接受 2 個輸入并移動錯誤的方向。
這是我的代碼如下:
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 個手指輸入,但它不起作用。我該怎么做才能讓它用一根手指作業并使其準確?
uj5u.com熱心網友回復:
從您的代碼看來,只要您用第二根手指觸摸,它就不會讀取您第一根手指的位置。
您的 if 陳述句中的Input.touchCount == 1對我來說似乎是個問題,這意味著 if 陳述句僅在您的螢屏上有一個手指時才會執行。如果您將其更改為Input.touchCount > 0,即使螢屏上有更多手指,它也會執行并且應該可以正常作業,因為您已經只使用Input.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);
}
uj5u.com熱心網友回復:
更改Input.touchCount == 1為Input.touchCount > 0并沒有解決我的問題。我通過在 PlayerController 腳本的 Start 函式中添加這行代碼來解決它:
Input.multiTouchEnabled = false;
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/369350.html
