繁体   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