当前位置:   article > 正文

Unity动画篇:浅谈Unity切换状态机动画。(Animator Controller和runtimeAnimatorController)

runtimeanimatorcontroller

本博客内容确实非常浅显,也就是说很适合像我这样的初学者,日后会根据我的学习不断更新此文章。

今天做红白机坦克大战项目,吃到五角星坦克会升级,这就涉及到Animator的动画切换。我看了Unity的官方文档。AnimatorOverrideController官方API说明,里面讲解的更加细致。我刚开始看不懂,慢慢琢磨才看懂一些皮毛。简而言之,动画的切换(不是单纯的同一角色的动画切换。)是依靠状态机的重写来实现的。状态机的重写在这里不再赘述。在Project视图中Creat一个Animator Override Controller然后将你要重载的状态机控制器拖入Controller即可。

然后我们开始实现吃到五角星Controller的切换,首先我们在脚本新建一个public AnimatorOverrideController[] tankatate;

然后将你的重载控制器拖进来。

然后我们在角色与五角星碰撞的脚本private void OnTriggerEnter2D(Collider2D collision)里面添加判定逻辑。

这里的tankLevel是PlayerManager里的单例公有整型变量。Up是五角星的Tag。

  1. private void OnTriggerEnter2D(Collider2D collision)
  2.     {
  3.         switch (collision.tag)
  4.         {
  5.             case "Up":
  6.                 Destroy(collision.gameObject);
  7.                 if(PlayerManager.Instance.tankLevel<3)
  8.                 {
  9.                     PlayerManager.Instance.tankLevel++;
  10.                 }
  11.                 break;
  12.             default:
  13.                 break;
  14.         }
  15.     }

然后我们在Update()里写上

  1. if(PlayerManager.Instance.tankLevel>=0)
  2.         {
  3.             Animator animator = GetComponent<Animator>();
  4.             animator.runtimeAnimatorController = tankatate[PlayerManager.Instance.tankLevel];
  5.         }

就可以实现简单的动画状态切换了。有不懂的或者有更好的实现方法的可以在下面留言,大家一起交流,一起进步。

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/117866
推荐阅读
相关标签
  

闽ICP备14008679号