簡體   English   中英

無法使TouchPhase在Unity3D中工作

[英]Cannot get TouchPhase to work in Unity3D

這是我的代碼

using UnityEngine;
using System.Collections;

public class cube : MonoBehaviour {

    bool start;
    // Use this for initialization
    void Start () {
        start = false;
    }

    // Update is called once per frame
    void Update () {
        if (Input.GetTouch(0).phase == TouchPhase.Began) {
            start = true;
        }
        if (Input.GetTouch(0).phase == TouchPhase.Ended) {
            start = false;
        }

        if (start) {
            transform.RotateAround (Vector3.zero, Vector3.left, 1);
        }
        else
            transform.RotateAround (Vector3.zero, Vector3.right, 1);
    }
}

觸摸屏幕時,起始變量應設置為true,並且多維數據集應開始順時針旋轉,放開屏幕時,它應開始逆時針旋轉,但僅在觸摸屏幕時才順時針旋轉,而當我觸摸屏幕時停止旋轉松手。

另外,當我通過觸摸屏幕將變量設置為true時,由於start變量現在為true,因此多維數據集應該繼續旋轉,但是一旦我停止觸摸屏幕,多維數據集就會停止。 它適用於鍵盤按鈕,但不適用於觸摸屏。

if (Input.GetTouch(0).phase == TouchPhase.Began) {
    start = true;
if (start) {
    transform.RotateAround (Vector3.zero, Vector3.left, 1);
}

我已經花了幾個小時來解決這個問題,但是仍然無法解決問題。

您的代碼在這里:

if (Input.GetTouch(0).phase == TouchPhase.Began) {
    start = true;
}
if (Input.GetTouch(0).phase == TouchPhase.Ended) {
    start = false;
}

如果屏幕上沒有觸摸會發生什么? 是的,您會收到錯誤消息,因為游戲正在嘗試訪問不存在的內容。 如果您在Unity上進行模擬,它將被打印在控制台上,但是當您使用自己的設備時,不會收到有關發生的錯誤的通知。
touchCount添加到您的代碼中:

if (Input.touchCount > 0) {
    if (Input.GetTouch (0).phase == TouchPhase.Began) {
        start = true;
    }
    if (Input.GetTouch (0).phase == TouchPhase.Ended) {
        start = false;
    }
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM