动画Animate
-
Animation是基于关键帧的动画系统,适用于简单的动画需求;
而Animator是一种状态机驱动的动画系统,适用于更复杂的动画逻辑和交互式动画。 -
通常,Animator组件更适合用于游戏中的角色动画控制,
而Animation组件则更适合用于简单的动画效果。
一、旧版Animation(动画)组件
1.基本属性
-
动画(Animation Clip)选择一个动画clip
-
Animations:添加动画列表
-
Play Automatically:自动播放
-
Animate Physics:在游戏中模拟物理效果和运动。编写脚本来控制游戏对象的物理行为,例如重力、碰撞、力的应用等。
- 使用Animate Physics时,游戏对象的物理行为会在FixedUpdate函数中进行模拟,而不是在常规的Update函数中。这是因为在FixedUpdate中,物理引擎会以固定的时间间隔进行更新,以确保物理模拟的稳定性和一致性。
- 使用Animate Physics时,游戏对象的物理行为会在FixedUpdate函数中进行模拟,而不是在常规的Update函数中。这是因为在FixedUpdate中,物理引擎会以固定的时间间隔进行更新,以确保物理模拟的稳定性和一致性。
-
Culling Type(剔除类型):
-
总是动画化(AlwaysAnimate):无论物体是否在相机视野内,动画都将播放并更新。这个选项会消耗更多的性能,因为即使物体不可见,动画仍然在播放。
-
Based On Renderers:根据物体的渲染器来确定是否需要播放动画。如果物体的所有渲染器都在相机视野内,则播放动画;否则停止动画。这个选项可以减少不必要的动画计算,提高性能。
-
-
Ctrl+6打开动画时间轴
- 相当于逐帧动画,可以添加属性等
2.基本方法
-
Play/Stop 播放/停止动画:
Animation.Play("animationName")
:播放指定名称的动画。Animation.Stop("animationName")
:停止指定名称的动画。
-
CrossFade 渐变切换动画:
Animation.CrossFade("animationName", fadeLength)
:从当前动画渐变切换到指定名称的动画,fadeLength为过渡时间。
-
IsPlaying 判断动画是否正在播放:
Animation.IsPlaying("animationName")
:返回指定名称的动画是否正在播放的布尔值。
-
Blend 动画混合:
Animation.Blend("animationName")
:将指定名称的动画与当前动画进行混合。
-
Rewind 倒放动画:
Animation.Rewind("animationName")
:将指定名称的动画倒放。
-
Sample 动画采样:
Animation.Sample()
:在当前时间点采样动画,用于手动控制动画播放的进度。
二、新版Animator(动画机)
1.基本属性
- 控制器:项目–创建–动画器控制器。可将创建的动画器控制器拖拽至控制器属性上。
-
Avatar:阿凡达,代表用户或角色的虚拟人物或数字化的形象。
在使用Unity时,可以通过以下步骤创建Avatar:
-
创建人物模型:在Unity中创建一个3D模型,例如角色或怪物。确保该模型包含骨骼系统,以便后面的动画制作。
-
导入动画数据:将已经制作好的动画数据导入到Unity中,例如FBX文件或其他支持的格式。您可以使用Unity的Animation窗口来预览和编辑动画效果。
-
创建Avatar:在Unity的Project视图中右键单击导入的动画文件,选择"Rig->Create Avatar"来创建Avatar。Unity会自动为您生成默认的Avatar,并将其绑定到人物模型上。
-
配置Avatar:根据人物模型的具体情况,您可以进一步配置Avatar的参数。例如,您可以调整Avatar的身高、骨骼长度、旋转角度等属性,以确保动画效果正确地应用到人物模型上。
-
应用动画:将Avatar应用到人物模型上,以便在游戏中播放动画。您可以使用Animator组件来控制Avatar的行为和状态,例如切换不同的动画片段、设置动画参数等。
-
-
应用根运动(Root Motion):允许使用动画的根骨骼来驱动角色或对象的移动。
按照以下步骤进行操作应用根运动:-
创建动画:在3D建模软件中创建角色的动画,确保动画中包含根骨骼的平移和旋转信息。例如,一个角色行走的动画应该包含根骨骼在世界空间中的移动。
-
导入动画:将动画导入到Unity中,并将其设置为角色的动画剪辑。确保在导入时启用"Import Root Motion"选项。
-
创建Animator组件:在角色对象上添加Animator组件,并将导入的动画剪辑分配给Animator Controller。
-
配置Avatar:确保角色的Avatar已经正确配置。在Avatar的"Motion"部分,选择"Default"或"Humanoid"选项, 以便使用根运动。
-
设置动画参数:在Animator Controller中创建适当的参数,例如"Speed"来控制角色移动的速度。
-
应用根运动:选择角色的Animator组件,在Inspector窗口中找到"Apply Root Motion"选项,并勾选它。
-
2.基本方法
public class AnimatorControllerExample : MonoBehaviour
{private Animator animator; // Animator组件的引用private static readonly int IsRunning = Animator.StringToHash("IsRunning"); // Animator参数名称的哈希值private void Start(){// 获取Animator组件的引用animator = GetComponent<Animator>();}private void Update(){// 按下空格键时,设置Animator参数的布尔值为true,播放动画if (Input.GetKeyDown(KeyCode.Space)){animator.SetBool(IsRunning, true);}// 松开空格键时,设置Animator参数的布尔值为false,停止动画if (Input.GetKeyUp(KeyCode.Space)){animator.SetBool(IsRunning, false);}}
}