【问题标题】:Unity Android touch Input resetUnity Android 触控输入重置
【发布时间】: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 进行比较。

【问题讨论】:

    标签: c# android unity3d


    【解决方案1】:

    是否有必要获取触摸计数?
    您可以使用跨平台输入。导入 CrossPlatForm 资产->导入->CrossPlatFormInput。

    导入后转到 Standard Assets->CrossPlatformInput->Prefabs->5 different prefabs ,选择更适合您项目的。

    【讨论】:

    • 谢谢你,我什至不知道跨平台输入存在。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-08-25
    • 1970-01-01
    相关资源
    最近更新 更多