Unity Mecanim动画的实现(六):动画事件,实现动画过程中的事件处理
2016-08-12 11:53
232 查看
在实现武器的切换环节中,目前采取了代码直接控制的方式,在运行中可以发现,往往武器在动画还没结束之间就直接完成了位置的切换,这样制作的动画不够逼真。我们希望能够在某个动画过程中切换武器的位置。这就需要涉及到动画事件。
动画事件不明思议就是在动画过程中添加事件,促发某个事件。比如上个章节中的收起武器这个位置切换的操作步骤如图所示。
添加到动画事件中的脚本函数为void UnWeapon():
此外,还可以通过Animation编辑窗口中进行动画事件设定,如下图所示。
动画事件不明思议就是在动画过程中添加事件,促发某个事件。比如上个章节中的收起武器这个位置切换的操作步骤如图所示。
添加到动画事件中的脚本函数为void UnWeapon():
public class PlayerControllerScript : MonoBehaviour { private Animator _animator; public const string SPEED="Speed"; public const string ISFIGHT="IsFight"; public float speed=10f; public bool isFight=false; public GameObject weaponPosition1; public GameObject weaponPosition2; public GameObject myCrossbow; // Use this for initialization void Start () { //myCrossbow.SetActive(false); } void Awake(){ _animator=GetComponent<Animator>(); } // Update is called once per frame void Update () { float v=Input.GetAxis("Vertical");//如果不按键,则会为0,如果按键为W则逐渐由0-1变化,松开之后则由1-0变化,如果按下S则由0 - -1变化,松开则-1-0变化 _animator.SetFloat(SPEED,v); if(v>0f){ transform.position+=Time.deltaTime*speed*v*Vector3.forward; }if(v<0f){//如果按键0,则倒退 transform.position+=Time.deltaTime*speed*v*Vector3.forward*0.4f; } if(Input.GetKeyDown(KeyCode.Q)){//按键Q来切换武器 isFight=!isFight; _animator.SetBool(ISFIGHT,isFight); if(isFight){ myCrossbow.transform.SetParent(weaponPosition2.transform,false); }else{ //myCrossbow.transform.parent=weaponPosition1.transform; //myCrossbow.transform.localPosition=Vector3.zero; //myCrossbow.transform.localRotation=Quaternion.identity; //myCrossbow.transform.localScale=new Vector3(1,1,1); } } } void UnWeapon(){ myCrossbow.transform.parent=weaponPosition1.transform; myCrossbow.transform.localPosition=Vector3.zero; myCrossbow.transform.localRotation=Quaternion.identity; myCrossbow.transform.localScale=new Vector3(1,1,1); } }
此外,还可以通过Animation编辑窗口中进行动画事件设定,如下图所示。
相关文章推荐
- iOS开发--QQ音乐练习,旋转动画的实现,音乐工具类的封装,定时器的使用技巧,SliderBar的事件处理
- iOS:使用block代码块实现事件处理过程中的回调
- vue里面的scroll事件,以及如何处理事件问题,附带动画效果如何实现
- 用Java事件处理机制实现录制回放功能
- ie 处理 gif动画 的onload 事件的一个 bug
- 用 ACE_Reactor 实现SOCKET事件处理
- JAVA---事件适配器----用内部类,匿名类实现事件处理
- 利用Java事件处理机制实现录制、回放功能
- Delphi中的事件处理过程
- wxPython的事件处理过程详解
- ie 处理 gif动画 的onload 事件的一个 bug
- C++ Builder 实现动态生成窗口、控件,以及处理控件事件
- .Net/C# 封装磁盘目录文件搜索功能的工具类 (实现了与搜索相关的事件,以便插入客户处理代码)
- 事件的实现过程
- 事件的实现过程---代理的实现过程。
- 用Java事件处理机制实现录制回放功能
- 两个例子均用现实的例子来解释委托事件的处理过程
- ACE笔记(3)-用 ACE_Reactor 实现SOCKET事件处理
- Global.asax的16个事件处理过程
- 事件的实现过程