最新文章
Cocos2d-x游戏开发实例详解7:对象释放时机
03-25 13:59
Cocos2d-x游戏开发实例详解6:自动释放池
03-25 13:55
Cocos2d-x游戏开发实例详解5:神奇的自动释放
03-25 13:49
Cocos2d-x游戏开发实例详解4:游戏主循环
03-25 13:44
Cocos2d-x游戏开发实例详解3:无限滚动地图
03-25 13:37
Cocos2d-x游戏开发实例详解2:开始菜单续
03-25 13:32
unity3d Animation入门
在 Unity3D 中,Animation 具有一些常见的属性及方法,下面为你详细介绍:
1. Animation.Play(播放)
方法定义
function Play (mode : PlayMode = PlayMode.StopSameLayer) : bool
function Play (animation : string, mode : PlayMode = PlayMode.StopSameLayer) : bool
功能说明
Play() 方法用于开始播放指定名称的动画,若未指定动画名称,则播放默认动画。该方法会使动画突然开始播放,没有任何混合效果。
- 当
mode为PlayMode.StopSameLayer时,同一层的所有动画将停止播放。 - 当
mode为PlayMode.StopAll时,所有正在播放的动画将停止播放。
特殊情况说明
- 如果动画已经在播放过程中,其他动画会停止,但该动画不会回退到开始位置。
- 如果动画未设置为循环模式,播放结束后它将停止并回退到开始位置。
- 如果动画无法播放(例如没有动画剪辑或者没有默认动画),
Play()方法将返回false。
示例代码
// 播放默认动画。
animation.Play();
// 播放 walk 动画 - 停止同一层的其他动画。
animation.Play("walk");
// 播放 walk 动画 - 停止其他动画。
animation.Play("walk", PlayMode.StopAll);
2. Animation.CrossFade(淡入淡出)
方法定义
function CrossFade (animation : string, fadeLength : float = 0.3F, mode : PlayMode = PlayMode.StopSameLayer) : void
功能说明
该方法用于在一定时间内淡入指定名称的动画,并同时淡出其他动画。
- 当
mode为PlayMode.StopSameLayer时,同一层的动画将在目标动画淡入时淡出。 - 当
mode为PlayMode.StopAll时,所有动画将在目标动画淡入时淡出。 - 如果动画未设置为循环模式,播放完成后它将停止并倒带至开始位置。
示例代码
// 淡入 walk 循环并且淡出同一层的所有其他动画。
// 在 0.2 秒之内完成淡入淡出。
animation.CrossFade("Walk", 0.2);
// 让一个角色包含 Run 和 Idle 动画,并且在玩家想移动的时候在它们之间淡入淡出。
function Update () {
if (Mathf.Abs(Input.GetAxis("Vertical")) > 0.1)
animation.CrossFade("Run");
else
animation.CrossFade("Idle");
}
3. Animation.Sample(采样)
方法定义
function Sample () : void
功能说明
Sample() 方法用于在当前状态对动画进行采样。当你需要明确设置一些动画状态并对其进行一次采样时,该方法非常有用。
示例代码
// 设置一些状态;
animation["MyClip"].time = 2.0;
animation["MyClip"].enabled = true;
// 取样动画。
animation.Sample();
animation["MyClip"].enabled = false;
4. Animation.Stop(停止)
方法定义
function Stop () : void
功能说明
Stop() 方法用于停止所有正在播放的动画。
示例代码
// 停止所有动画。
animation.Stop();
5. Animation.this[string name](操作名字)
属性定义
var this[name : string] : AnimationState
功能说明
通过该属性可以获取指定名称动画的 AnimationState 对象,进而对动画的状态进行操作,例如设置动画的速度、权重等。
示例代码
// 取得 walk 动画状态并设置其速度。
animation["walk"].speed = 2.0;
// 取得 run 动画状态并设置其重量。
animation["run"].weight = 0.5;
6. Animation.wrapMode(循环模式)
功能说明
该属性用于指定动画剪辑播放完成之后的操作方式。
循环模式选项
WrapMode.Default:从动画剪辑中读取循环模式(默认是Once)。WrapMode.Once:当时间播放到末尾时,停止动画的播放。WrapMode.Loop:当时间播放到末尾时,重新从开始播放。WrapMode.ClampForever:播放动画,当播放到结尾时,动画总是处于最后一帧的采样状态。
示例代码
// 使用动画循环模式。
animation.wrapMode = WrapMode.Loop;
通过以上这些常见的属性和方法,你可以在 Unity3D 中对动画进行基本的控制和操作,从而实现丰富的动画效果。