每当我运行此代码时,我都会收到此错误:
错误CS0029:无法隐式转换类型UnityEngine.Touch'至 布尔'
这是什么问题?我试图在手指触摸屏幕时向上移动gameObject
。
private Rigidbody rb;
void Start() {
rb = GetComponent<Rigidbody>();
}
void Update () {
if(Input.GetTouch()) {
transform.position += Vector3.up;
}
}
}
答案 0 :(得分:2)
Input.GetTouch
返回什么?
返回表示特定触摸状态的对象。
你在这做什么?
if(Input.GetTouch())
不使用布尔表达式或布尔变量,而是使用对象!这无法编译。在if语句中,你必须使用条件或布尔变量。
我们如何识别用户是否有任何接触?
if(Input.touchCount > 0)
{
}
答案 1 :(得分:2)
因为这个条件:
if(Input.GetTouch())
不会返回boolean
类型。它返回touch
。要检查您是否接触过,您应该像这样使用它:
void Update ()
{
if(Input.touchCount > 0) {
transform.position += Vector3.up;
}
}
如果您想了解有关触摸检测的更多信息,请查看this统一手册。
答案 2 :(得分:1)
根据Unity API,public static Touch GetTouch(int index);
会返回Touch
,而不是bool
。