unity animation 控制动作之间的切换

2015年01月15日 13:41 0 点赞 0 评论 更新于 2020-01-11 23:38

在简单的动画播放控制中,同一时间通常只有一个动作。那么,在 Unity 里如何控制动作之间的切换呢?例如静止(idle)、行走(walk)、奔跑(run)、跳跃(jump)和攻击(attack)等全身动作,同一时间角色只应执行一种动作。下面我们将举例说明在 Unity 中是如何完成动作切换控制的。

动画融合技术的重要性

在当今的游戏开发中,动画融合(Animation Blending)是确保游戏动画能够顺畅过渡的一项基本特性。动画师会创建各种动画,如行走循环动画、奔跑循环动画、原地空闲动画或射击动画等。在游戏的任意时刻,角色都可能从空闲站立状态转换为走动状态,反之亦然。显然,我们不希望两个不同动作之间出现突然跳转的情况,而是期望动画能够平滑过渡。

而解决这一问题的关键就在于动画融合技术。在 Unity 中,同一个角色可以拥有任意数量的动画,所有这些动画会融合成一个总的动画。

为角色添加动画并实现平滑过渡

首先,我们要为一个角色添加原地空闲站立和走动这两个动画,并实现它们之间的平滑过渡。为了简化脚本编写过程,我们需要进行以下设置:

  1. 设置动画的 Wrap Mode 为 Loop:这样可以让动画循环播放。
  2. 关闭 Play Automatically:目的是让我们的脚本来独占动画的播放控制权。

编写动画切换脚本

我们的第一个动画脚本相对简单,需要实现的功能是探查角色的移动速度,然后在行走和站立状态之间进行淡入淡出切换。在这个简单的测试中,我们使用预设的输入轴(pre - setup input axes)。以下是具体的脚本代码:

function Update () {
if (Input.GetAxis("Vertical") > 0.2) {
animation.CrossFade ("walk");
} else {
animation.CrossFade ("idle");
}
}

运行脚本的步骤

  1. 创建 JS 脚本:选择 Assets -> Create Other -> Javascript 来创建一个新的 JavaScript 脚本。
  2. 复制代码:将上述脚本代码复制到新创建的脚本文件中。
  3. 关联脚本:把脚本拖拽给角色对象(需要确保该对象与动画所在的游戏对象相同)。

完成上述步骤后,点击 Play 按钮,当按下上下键时,角色会开始走动;松开上下键时,角色会站立不动。

通过以上步骤,我们就实现了在 Unity 中控制角色在空闲站立和走动这两个动作之间的平滑切换。

作者信息

feifeila

feifeila

共发布了 570 篇文章