首页 > 解决方案 > 击中角色物理?

问题描述

好的,对于这个任务,我需要协调物理在某个点和动画中击中游戏对象,以创造出击打角色的错觉,他像被那个接触点推动一样跌跌撞撞地往回走。

我在被击中的对象和被击中的角色上都有刚体,并且可以判断击中对象何时进入角色的盒子对撞机。我首先想到的是在接触点产生一种冲动,然后触发我预先制作的角色动画——

Vector3 direction = (this.transform.position - collider.transform.position) / (this.transform.position - collider.transform.position).magnitude;
        this.transform.GetComponent<Rigidbody>().AddForce(direction, ForceMode.Impulse);

问题是这只会让角色在击中对象的对面缓慢漂浮(刚体已检查角色的重力),并且根据角色面对的位置,动画看起来与出拳不协调。

我想看看是否有一种简化的方式来做到这一点 - 我如何在 Unity 中创建一个现实的出拳/向后移动的情况?

标签: c#unity3dgame-physicsphysicscollision

解决方案


使用 Unity 开箱即用地实现这种行为并不容易。您需要编写将布娃娃物理与动画混合的脚本。

您可能想尝试的一种方法是将您的布娃娃“固定”到动画的骨骼上,如果发生碰撞,布娃娃会暂时(部分或完全地)从骨骼上解除固定。当/如果它完成受物理影响时,您可能希望从基于布娃娃位置动态创建的关键帧动画到目标关键帧。

资产商店中也有像PuppetMaster这样的工具可以做这样的事情,但它们通常不是免费的,因为它们很难做好。


推荐阅读