不能让TouchPhase在Unity3D中工作

本文关键字:工作 Unity3D TouchPhase 不能 | 更新日期: 2023-09-27 18:16:36

这是我的代码

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);
    }
}

当屏幕被触摸时,start变量应该被设置为true,立方体应该开始顺时针旋转,当你放开屏幕时,它应该开始逆时针旋转,但是当屏幕被开始触摸时,它只顺时针旋转,当我放开屏幕时,它停止旋转。

还有一件事,当我通过触摸屏幕将变量设置为true时,立方体应该继续旋转,因为start变量现在为true,但一旦我停止触摸屏幕,它就会停止旋转。它支持键盘按钮,但不支持触摸屏。

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

我花了几个小时在这个问题上,仍然不明白我的头在哪里。

不能让TouchPhase在Unity3D中工作

您的代码:

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;
    }
}