首页 > 解决方案 > 无碰撞物体的准确“打孔”检测

问题描述

问候。我正在制作一个项目,在该项目中我需要检测玩家何时在没有任何物体碰撞的情况下进行拳击(基本上是冲压空气)。

在尝试完成这项工作时,我尝试使用手(控制器)速度作为参考。总体思路是跟踪最后 n 帧的手部速度,当它达到 0 时 - 考虑在手停止时执行打孔,并且将使用来自最后 n 个跟踪帧的最大速度来计算打孔力。

似乎我遇到了一个问题,即使手稳定且连续移动,从手返回的速度也经常达到 0,因此它不断捕获“假拳”。

我在 Unity 中工作并使用刚体来获得手的速度。有没有人知道对此有任何好的解决方案,或者在没有物体可以击中时有更好的方法来检测出拳。想法和想法受到赞赏。

标签: c#unity3dgame-physicsvirtual-realitysteamvr

解决方案


我建议使用增量位置而不是速度,不确定您是在制作物理游戏(如 QWOP)还是角色扮演拳击动画。但是如果是角色打拳动画,那根本就没有速度(我猜你只会得到下落速度),因为运动是通过动画操作 Transform.position 应用的。无论哪种方式,增量位置始终是获得运动的好方法,只需将当前帧的位置减去最后一帧的位置即可。

但是如果我只是想检查我的拳头是否击中任何物体,我会在我的手上触发一个触发器,然后使用 OnTriggerEnter 进行检查,一定要遮住我自己的身体并给出出拳时间,这样你就可以得到正确的结果。


推荐阅读