前言
使用人体模型通常由美术给我们,此时拿来用时需要对其模型的动画进行控制,来播放动画,
这时可以使用Animation脚本来控制模型的动画
Animation脚本: 旧版本动画,用来给模型播放动画的组件
mode的主要功能介绍
- ScaleFactor 用来调整大小比例,这样就不要(也不能)在模型的Transform组件的scale大小设置比例了
- 动画类型->旧版本Legacy、新版本(一般Generic、类人Humanoid)
- 动画分割->根据帧数分割,如果有一个一连串的动画,则可以根据帧数分割成多个动画
- Animation组件使用
给模型中Animation组件添加默认动画片段,给一个模型添加多个动画
动画类型
Animation 类
isPlaying 属性: 是否正在播放动画
IsPlaying 方法: 是否正在播放动画
Play方法:播放某个动画
Stop方法:停止当前所有动画,有个重载,传入某个动画名,停止某个动画
CrossFade方法:播放动画切换有一个时间的过渡(淡出淡入)
public bool Play (string animation);
public extern bool isPlaying {
get;
}
public extern bool IsPlaying (string name);
public void Stop ();
public void CrossFade (string animation, float fadeLength);
用脚本代码控制模型播放动画
using UnityEngine;
using System.Collections;
public class AnimationTest : MonoBehaviour {
private Animation _ani;
void Awake(){
_ani = GetComponent<Animation> ();
}
void Update(){
//点击鼠标左键,角色播放攻击动画
if (Input.GetMouseButtonDown (0)) {
//_ani.Play ("Attack");
_ani.CrossFade ("Attack", 0.5f);
}
//如果角色没有正在播放动画
if (!_ani.isPlaying) {
_ani.Play ("Idle");
}
if (Input.GetKey (KeyCode.A)) {
_ani.Play ("Run");
}
if (Input.GetKeyUp (KeyCode.A)) {
_ani.Play ("Run");
}
Debug.Log (_ani.IsPlaying ("Idle"));//测试是否播放动画
}
}
注意:
如果是要写边跑边攻击这种动画,如果通过程序写跑动画和攻击动画,则叫动画融合,但是一般都是让美术再做一个动画(边跑边攻击),效果更好。