无法让TouchPhase在Unity3D中运行

时间:2014-08-05 00:13:38

标签: c# android ios 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时,立方体应该继续旋转,因为起始变量现在是真的,但是一旦我停止触摸屏幕它就会停止。它适用于键盘按钮,但不适用于触摸屏。

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

我已经花了好几个小时,仍然无法解决问题所在。

1 个答案:

答案 0 :(得分: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;
    }
}