【发布时间】:2018-11-18 18:32:38
【问题描述】:
首先,我很抱歉我的英语提前
我希望玩家在输入一次触摸时移动,并且仅在输入两次触摸时使用技能。
下面的代码看起来很好,除非我输入两次触摸然后取消'first touch'并重新输入触摸,它出错了。
但是如果我取消了strong text第二次触摸效果很好。
public class Test : MonoBehaviour {
private void Update() {
if(Input.touchCount > 0) {Movement();}
if(Input.touchCount > 1) {Skill();}
}
private void Movement() {
Vector2 inputPos = Camera.main.ScreenToWorldPoint(Input.GetTouch(0).position);
transform.position = Vector3.MoveTowards(transform.position, inputPos, 30f * Time.deltaTime);
}
private void Skill() {print("skill fired");}
Working as Intended
// [1]: https://imgur.com/ngjoabY
// [2]: https://imgur.com/kkDAGEW
Problem the second reinput should fire skill instead of moving toward that
// [3]: https://imgur.com/gD0x8rP
// [4]: https://imgur.com/o06mJgs
}
在你给它两次触摸并取下第一次触摸后,第二次触摸成为第一次触摸并被 if(Input.touchCount > 0) {Movement();} 捕获。
所以在这个阶段,如果你再次输入,应该是GetTouch(1)吧?
但是重新输入第二次触摸变成了GetTouch(0)!!
所以应该使用技能的对象移动到第二个输入位置
我已尽我所能,但找不到解决方案。
我在想如果我可以刷新 Input Touches 的缓冲区,我可以这样做,但它只有 Get 方法。
而 Input.simulateMouseWithTouches 也没有用。
触摸类变量甚至无法与 null 进行比较。
【问题讨论】: