我是 Unity3D 游戏开发新手。我正在 Unity3D 中创建点球大战游戏,并使用 C# 编写脚本。我已经创建了所有基本功能,例如踢球、添加了球员的 3D 对象,现在我正在制作守门员动画来阻止足球。我使用 mixamo 应用了守门员动画。但我不知道让守门员在正确的时刻向足球方向扑去的最佳方法是什么。
目前,我正在检查
FixedUpdate()
中足球和守门员之间的位移,如下面的示例代码所示,在特定的位移处,我根据位移向左或向右启动守门员的动画。
void FixedUpdate() {
canAnimateGoalkeeper();
}
void canAnimateGoalkeeper() {
distanceBetweenBallAndPlayer = Vector3.Distance(football.transform.position, goalKeeper.transform.position );
if(!isFootballAtInitialPosition && (distanceBetweenBallAndPlayer <= 10f)) {
//if football is in the left side of the goalkeeper
goalKeeperLeftDiveAnim();
//else if football is in the right side of the goalkeeper
goalKeeperRightDiveAnim();
}
}
一个简单的解决方案是在右上、左下、中间等部位放置8个大型碰撞体。然后检查并查看球进入了哪个 clider,然后激活与该 clider 相关的动画。当然,您应该检查球与球门之间的距离以及球的速度,看看什么时候是运行动画的最佳时机,您甚至可以根据球的速度计算并应用动画的速度。射击。