如何区分连续点击和单击? Unity动画?

时间:2016-12-21 22:29:11

标签: c# animation unity3d timer tap

好吧,我到处都发布了这个,但找不到答案。我有一个在Unity中制作的C#游戏,我正在使用代码在我的空闲动画和我的步行周期之间进行转换,具体取决于用户点击。

我的问题是我无法区分连续和单击 - 我尝试增加整数并在角色停止移动时将它们设置为零,计时器,但一切都没有得到可靠的结果。

基本上我的角色有3种状态,他需要根据水龙头的数量进行切换:

空闲=没有攻击,所以他没有移动(点击触发1个单位前进) 单步= 1次点击,在右侧或左侧之间交替 连续步行=多次轻击,所以他不断移动

到目前为止,我已经这样做了: 根据他目前的位置是不是他的最后一位(他正在移动)我有一个记录他的时间走路的计时器。如果这个计时器高于他完成一步所需的时间,我就转换到我的连续步行动画。如果他停止移动,那么计时器设置为零。

原因我需要一个单步状态(并且这个状态运行良好)是我必须在左右之间交替而不仅仅是完整循环的一部分,这就是为什么我有一个偏移量在整个动作中移动增量。

if (currentPos != lastPos && didCollide == false) {
            //print ("moving now");
            animator.SetBool ("isWalking", true);
            if (timeWalking >= 0.1f) {
                //this is for continuous cycle
                animator.SetBool("contWalking", true);
            } else {
                if (InputManager.stepCount % 2 != 0) {
                    //individual cycle left
                    animator.SetFloat ("walkOffset",animOffset);

                } else {
                    //individual cycle right
                    animator.SetFloat ("walkOffset",animOffset);

                }
                animOffset += 0.1f;
            }

            timeWalking += Time.deltaTime;

        } else {
            //stopped
            animator.SetBool ("isWalking", false);
            animator.SetBool("contWalking", false);
            timeWalking = 0.0f;
        }
        lastPos = currentPos;

enter image description here

问题是时间似乎有所不同,这可以让他很少连续循环,然后就是毛病。有很多口吃,因为它主要是进入单步状态,即使他已经移动一段时间也不能连续。

我没有想法。如果连续点击是否连续,我如何转换到连续步行周期?不要以为定时器是要走的路。这可能吗?

2 个答案:

答案 0 :(得分:0)

您需要做的是节省第一次点击的时间并等待第二次点击。如果第二次点击发生,则执行双击状态,否则运行单击状态。第二次敲击等待0.5到0.8秒是好的。有关详细说明和代码,请转到此统一线程:https://forum.unity3d.com/threads/single-tap-double-tap-script.83794/

答案 1 :(得分:0)

如果你想避免并发症,我建议你从辉煌的TouchKitPrime31。它是免费的,开源的,只是工作:)