基本上我要做的是创建一些代码,当触摸在屏幕上滑动时会注册,这样我就可以通过触摸控件移动我的角色。
我所写的内容有时似乎只能起作用,当它发生时它会使角色移动多次。
这是我的代码:
if (Input.touches [0].phase == TouchPhase.Ended) {
Debug.Log (Input.touches [0].deltaPosition);
if (Input.touches[0].deltaPosition.y > Input.touches[0].deltaPosition.x || Input.touches[0].deltaPosition.y > (-Input.touches[0].deltaPosition.x))
movePlayer ("Up");
if ((-Input.touches[0].deltaPosition.y) > Input.touches[0].deltaPosition.x || (-Input.touches[0].deltaPosition.y) > (-Input.touches[0].deltaPosition.x))
movePlayer ("Down");
if ((-Input.touches[0].deltaPosition.x) > Input.touches[0].deltaPosition.y || (-Input.touches[0].deltaPosition.x) > (-Input.touches[0].deltaPosition.y))
movePlayer ("Left");
if (Input.touches[0].deltaPosition.x > Input.touches[0].deltaPosition.y || Input.touches[0].deltaPosition.x > (-Input.touches[0].deltaPosition.y))
movePlayer ("Right");
}
任何建议都会非常有用
答案 0 :(得分:0)
一旦做出决定,您就不需要再运行测试了,所以这是使用else if
和else
if()
{
}
else if()
{
}
else
{
}
确保只能执行一个案例。
然而......我认为您的测试存在缺陷。以下不是更合适吗?
var dp = Input.touches[0].deltaPosition;
if(Math.Abs(dp.x) > Math.Abs(dp.y))
{
//gesture had more horizonal movement
if(dp.x < 0)
{
//left
}
else
{
//right
}
}
else
{
//gesture had more vertical movement
if(dp.y < 0)
{
//up
}
else
{
//down
}
}
答案 1 :(得分:0)
我写了this简单的教程,基本上是7行代码,就像一个魅力。简单易用。 你只需要在Unity事件系统中使用te build来编写冗长且无用的代码。 无需使用更新或固定更新。