unity3d【动画脚本】

unity3d【动画脚本】

ID:34726649

大小:50.91 KB

页数:4页

时间:2019-03-10

unity3d【动画脚本】_第1页
unity3d【动画脚本】_第2页
unity3d【动画脚本】_第3页
unity3d【动画脚本】_第4页
资源描述:

《unity3d【动画脚本】》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、Unity3D——动画脚本 Animation Scripting有时你需要程序化的驱动你的角色骨骼. 例如你可能需要你的角色的头注视3d空间的某个点. 这个活最好让脚本来干. 幸运的是, Unity做这个很容易. 在Unity 中所有骨骼来驱动蒙皮网格(skinned mesh)的变换(Transforms). 因而你可以给角色的骨骼写脚本,就和其他GameObject一样.  很重要的一点是动画系统updates the Transforms 是在Update() function调用之后  ,

2、LateUpdate() function 调用之前. 因而如果你要调用 LookAt() function 你应该在 LateUpdate() 中调用,覆盖动画播放.  布娃娃系统Ragdolls 也是用同样的方法制作出来的. 你可以简单的把刚性物体(Rigidbodies), 角色关节(Character Joints) 和 胶囊碰撞体(Capsule Colliders)连接给不同的骨骼. 这样物理系统就可以作用于蒙皮角色(skinned character).  动画播放时为了让角色受动画系

3、统的控制,可以设置物体为动力学物体(isKinematic),当需要让他受物理控制时把该属性取消。  角色死亡时,可以销毁原始模型,创建一个布娃娃代替。同样,飞机车辆等的爆炸效果,最好也是替换成另外一个由一批带有刚体的部件组成的预制件,部件上可以增加一些粒子特效来实现烟雾火焰等效果。  动画融合(Animation Blending)可以实现动作转化时的平滑过渡。动画混合(Animation Mixing)和附加动画(Additive Animations)可以削减游戏创建的动画片段的数量。动画可以

4、和其他动画以各种组合一起使用。  让一些动画只应用给身体的一部分。例如,有个一个挥手动画,想要在空闲角色或正行走的角色播放挥手动画。没有动画混合,您必须创建两个手挥舞着动画:一个用于空闲,一个用于行走。而通过调用AddMixingTransform(),叠加动画混合变换到动画。不过,如果你添加肩膀变换作为混合变换,来做挥手动画,那么挥手动画将从肩膀位置处受完全控制,身体的其余部分将不会受到它的影响,将继续播放空闲或行走动画。因此,只需要一个挥手动画。?123var mixTransform : Tr

5、ansform = transform.Find(“root/upper_body/left_shoulder”); animation[“wave_hand”].AddMixingTransform(mixTransform);  附加动画(Additive Animations)允许你在顶层覆盖其他所有可能播放的动画的效果当你制作一个附加动画时, Unity将计算动画片断里的第一帧 (first frame)和当前帧(current frame)的差异. 然后它将在所有其他播放的动画之上应用这个

6、差异【狗刨学习网】  附加动画和动画混合都可以让我们减少对游戏中要制作动画的数量,尤其对于一些表情动画现在你只需要制作一个左倾( lean-left) 和右倾( lean-right)动画. Unity将为此倾斜动画新建一个层并置于walk, idle 或 run循环的层级之上.  叠加型动画通过将两个动画彼此相减进行计算,并将其存储为两个动画的差值。当使用叠加动画时,在每个使用叠加动画的变换上也在播放一些其他非叠加动画,这是至关重要的。否则,动画将添加在最后一帧的结果上面,这当然不是你想要的。  

7、动画层(Animation Layers)  例如有一个射击动画,一个空闲和行走循环动画,想要在行走和空闲动画之间连续过渡,基于玩家的速度。但当玩家射击时,仅显示射击动画,因此,射击动画基本上有更高优先级。要做到这点最简单的方法是在射击时简单的保持行走和空闲动画,然后我们需要确保射击动画比空闲和行走动画在更高的层。这意思是射击动画将首先接收融合权重。行走和空闲动画仅当射击动画不使用融合权重100%时,接收权重。因此,交叉淡入淡出射击动画时,权重将从0开始很短时间内变为100%,在开始时步行和空闲层仍

8、然会收到融合权重,但当射击动画完全切入时,它们不再接收权重,这正是我们所需要的!?0102030405function Start () {   //循环播放   animation.wrapMode = WrapMode.Loop;   //射击动作不循环   animation["shoot"].wrapMode = WrapMode.Once;060708091011121314151617181920   // idle 和walk 设置低优先级默认为.   

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。