您的位置:首页 > 移动开发 > Unity3D

Unity-Animator深入系列---FAQ

2016-01-04 09:06 603 查看
回到 Animator深入系列总目录

Q: 如果想做角色负伤的一套动画,但是又和原有状态机不冲突,只是想换动画剪辑,应该怎么办?

A:


新建一个层,设置为同步模式。这时候你不能在同步层添加状态,但你可以替换动画剪辑。

官方的解释是:


Sometimes it is useful to be able to re-use the same state machine in different layers. For example if you want to simulate "wounded" behavior, and have "wounded" animations for walk / run / jump instead of the "healthy" ones. You can click the Sync checkbox on one of your layers, and then select the layer you want to sync with. The state machine structure will then be the same, but the actual animation clips used by the states will be distinct.

有些时候在不同层中能够重用一些相同的状态机是很有用的。比如:如果你希望模拟一个“负伤”的行为,并且这个“负伤”的动画是为代替走动/跑动/跳动中“健康”(的动画)。你可以点击某个层上的“同步”(Sync)复选框,并且选择你希望同步的那一层。这样的话,这些状态机结构将会保持一致,但是实际的动画剪辑会有区别。



Q: 公用状态机还是单独配置状态机?

A:村民之类的角色可以公用状态机,Unity有一个Animator Override Controller(Project面板下,右键创建里)。用这个来重写公用状态机的动画文件。

而主角没办法,只能单独配置状态机,最后策划在表里填写用哪一个控制器文件,控制器文件可以经过Resources载入

Q: 位移如何通过状态机的变量而改变长度?

A: 游戏中可能你角色力量值高一些,位移就长一些。解决方法有很多可以用StateMachineBehaviour,在OnAnimatorMove中添加附加移动值,这种最为直观

也可以通过混合树,把最小移动和最大移动放进混合树里,通过参数控制最小移动和最大移动。

Q: 使用Animator时,以前Animation的事件去哪了?

A:选中带动画的模型(就是@后缀),Inspector里第三个页签Animations-最下方Events

Q: 角色连技难道要手动链接状态吗?

A:可以用.CrossFade(...)接口自行去实现逻辑

Q:Animator打开根骨骼位移后,动画一直向上飘?

A:原因可能是当前状态没有加动画剪辑去控制根骨骼,可以加一个idle动画,默认播放这个idle动画,并且idle勾选根骨骼位移(Root Transform Position(Y)),这个选项在FBX动画设置中

Q:如何实现Animator的动画倒播?

A:比较麻烦,可以参考我的这篇文章:LINK

Q:Animator空中播放动画不能应用重力怎么办?

A:使用gravityWeight,具体用法请看:LINK 。其中第11条是这个接口

Q:根骨骼坐标被锁定,不可修改?

A:在Animator初始化时候会锁定一次根骨骼坐标,重置好坐标,调用Rebind()即可解决

Q:一帧内调用CrossFade先后播放2个状态,第二个状态不执行?

A:Animator默认混合结束之后才算进入第二个状态,比如在Idle状态,进入Run状态。这时同一帧内或者短时间内再回到Idle,由于混合没有结束,未到达Run之前还在Idle,就会无效

最后会发现还在Run状态,没回去
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: