好吧,我到处都发布了这个,但找不到答案。我有一个在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;
和
问题是时间似乎有所不同,这可以让他很少连续循环,然后就是毛病。有很多口吃,因为它主要是进入单步状态,即使他已经移动一段时间也不能连续。
我没有想法。如果连续点击是否连续,我如何转换到连续步行周期?不要以为定时器是要走的路。这可能吗?
答案 0 :(得分:0)
您需要做的是节省第一次点击的时间并等待第二次点击。如果第二次点击发生,则执行双击状态,否则运行单击状态。第二次敲击等待0.5到0.8秒是好的。有关详细说明和代码,请转到此统一线程:https://forum.unity3d.com/threads/single-tap-double-tap-script.83794/
答案 1 :(得分:0)