Unity3D 4.x 使用Mecanim实现动画控制
2014-08-07 22:45
435 查看
unity3d 4.x
版本之后提供了一种新的动画机制Mecanim,虽然目前还支持之前的Animation,但看到unity3d 4.3
预览版里Sprite的动画也是基于Animator的,可知Mecanim将会是以后动画播放的趋势!
Mecanim是一种基于状态机的结构,不同的状态表示一个动作(或者多个动作融合,或者一个子状态机),状态之间使用一种称为Transition的组件关联,Transition中可以设定一些条件,当在Transition“源状态”下,满足其条件之后,将自动跳转到Transition“目的状态”!(具体用法请参照Unity3d手册Mecanim)在一些ARPG的游戏中,比如
端游的DNF和闯关类的街机游戏,连续按攻击键都会触发一套组合攻击,在这个过程中敌人一般是硬直状态的,而且组合攻击的最后一下一般是重击,这样做既增加了连击带来的爽快感,又促使玩家在攻击时采取一定的攻击策略!
Mecanim的状态机设计就很方便的使开发者实现了这一效果!
1.动画状态机
这里只用4个动作描述,待命状态(Idle),攻击1状态(AtkSlice),攻击2状态(AtkStab),攻击3状态(AtkCleave),3个攻击状态分别表示连续按下“普通攻击键”时触发的状态,是有先后顺序关系的,即如果在待命状态下按下“攻击键”,则进入攻击1状态;如果在攻击1状态下继续按下“攻击键”,则进入攻击2状态,如果不按下“攻击键”,则回到待命状态;攻击2状态到攻击3状态同理;攻击3状态认为是重击,即连击结束,回到待命状态!
状态图如下
我希望能以最少的代码和设置完成这个功能,所以只添加了一个状态机参数 ActionCMD,假设 ActionCMD = 1 为进入攻击状态参数
(1)在任意3种攻击状态下,不再继续按下“攻击键”,则回到待命状态,即上图 3条白色Transition(2)在待命,攻击1,攻击2状态下,继续按下“攻击键”,则跳转到连击状态(即下一个攻击状态),即上图3条蓝色Transition
2.代码实现(1)状态机设置完成之后,要做的就是在代码中完成对当前状态的判断,以及对状态参数的设置,用以完成动画状态机的切换!
[JavaScript] 纯文本查看 复制代码
?
(2)在Start() 中获取Animator组件引用
(3)在Update() 中根据当前状态和输入参数促使状态切换
[JavaScript] 纯文本查看 复制代码
?
[JavaScript] 纯文本查看 复制代码
?
这里需要注意的是,在Update() 中使用的0.6和0.8 应该分别小于当前状态跳转到待命状态的参数Exit Time(这个时间也是正交化的)
版本之后提供了一种新的动画机制Mecanim,虽然目前还支持之前的Animation,但看到unity3d 4.3
预览版里Sprite的动画也是基于Animator的,可知Mecanim将会是以后动画播放的趋势!
Mecanim是一种基于状态机的结构,不同的状态表示一个动作(或者多个动作融合,或者一个子状态机),状态之间使用一种称为Transition的组件关联,Transition中可以设定一些条件,当在Transition“源状态”下,满足其条件之后,将自动跳转到Transition“目的状态”!(具体用法请参照Unity3d手册Mecanim)在一些ARPG的游戏中,比如
端游的DNF和闯关类的街机游戏,连续按攻击键都会触发一套组合攻击,在这个过程中敌人一般是硬直状态的,而且组合攻击的最后一下一般是重击,这样做既增加了连击带来的爽快感,又促使玩家在攻击时采取一定的攻击策略!
Mecanim的状态机设计就很方便的使开发者实现了这一效果!
1.动画状态机
这里只用4个动作描述,待命状态(Idle),攻击1状态(AtkSlice),攻击2状态(AtkStab),攻击3状态(AtkCleave),3个攻击状态分别表示连续按下“普通攻击键”时触发的状态,是有先后顺序关系的,即如果在待命状态下按下“攻击键”,则进入攻击1状态;如果在攻击1状态下继续按下“攻击键”,则进入攻击2状态,如果不按下“攻击键”,则回到待命状态;攻击2状态到攻击3状态同理;攻击3状态认为是重击,即连击结束,回到待命状态!
状态图如下
我希望能以最少的代码和设置完成这个功能,所以只添加了一个状态机参数 ActionCMD,假设 ActionCMD = 1 为进入攻击状态参数
(1)在任意3种攻击状态下,不再继续按下“攻击键”,则回到待命状态,即上图 3条白色Transition(2)在待命,攻击1,攻击2状态下,继续按下“攻击键”,则跳转到连击状态(即下一个攻击状态),即上图3条蓝色Transition
2.代码实现(1)状态机设置完成之后,要做的就是在代码中完成对当前状态的判断,以及对状态参数的设置,用以完成动画状态机的切换!
[JavaScript] 纯文本查看 复制代码
?
(3)在Update() 中根据当前状态和输入参数促使状态切换
[JavaScript] 纯文本查看 复制代码
?
?
相关文章推荐
- Unity3D 4.x 使用Mecanim实现动画控制
- Unity3D之Mecanim动画系统学习笔记(六):使用脚本控制动画
- Unity3D之Mecanim动画系统学习笔记(六):使用脚本控制动画
- Unity3D之Mecanim动画系统学习笔记(六):使用脚本控制动画
- Unity3D之Mecanim动画系统学习笔记(六):使用脚本控制动画
- Unity3D 4.x 使用Mecanim实现连击
- Unity3D游戏开发之使用Mecanim动画系统控制2D动画
- Unity3D游戏开发之使用Mecanim动画系统控制2D动画
- 手势检测实现相册的左右滑动(并加上移动与旋转的特效) 首先,activity_main.xml里,使用ViewFlipper组件(可使用动画控制多个组件之间的切换效果) <?xml version="
- 008-实现Unity3d中使用LeanTouch插件进行触屏控制(拖拽、移动、缩放旋转...)
- Unity3D开发(五):Unity3D 4.x 使用Mecanim实现连击
- unity3d中使用精灵sprite创建并控制2d动画
- Unity3D 使用Mecanim实现连击
- 使用Mecanim动画系统来控制2D动画
- Unity3D开发(五):Unity3D 4.x 使用Mecanim实现连击
- Unity3D开发(五):Unity3D 4.x 使用Mecanim实现连击(转)
- Unity3D开发(五):Unity3D 4.x 使用Mecanim实现连击
- FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制
- FleaPHP 开发指南 - 8. 如何使用 RBAC 组件实现访问控制
- 使用J2ME技术实现简单的动画