赞
踩
本博客内容确实非常浅显,也就是说很适合像我这样的初学者,日后会根据我的学习不断更新此文章。
今天做红白机坦克大战项目,吃到五角星坦克会升级,这就涉及到Animator的动画切换。我看了Unity的官方文档。AnimatorOverrideController官方API说明,里面讲解的更加细致。我刚开始看不懂,慢慢琢磨才看懂一些皮毛。简而言之,动画的切换(不是单纯的同一角色的动画切换。)是依靠状态机的重写来实现的。状态机的重写在这里不再赘述。在Project视图中Creat一个Animator Override Controller然后将你要重载的状态机控制器拖入Controller即可。
然后我们开始实现吃到五角星Controller的切换,首先我们在脚本新建一个public AnimatorOverrideController[] tankatate;
然后将你的重载控制器拖进来。
然后我们在角色与五角星碰撞的脚本private void OnTriggerEnter2D(Collider2D collision)里面添加判定逻辑。
这里的tankLevel是PlayerManager里的单例公有整型变量。Up是五角星的Tag。
- private void OnTriggerEnter2D(Collider2D collision)
- {
- switch (collision.tag)
- {
- case "Up":
- Destroy(collision.gameObject);
- if(PlayerManager.Instance.tankLevel<3)
- {
- PlayerManager.Instance.tankLevel++;
- }
- break;
- default:
- break;
- }
- }
然后我们在Update()里写上
- if(PlayerManager.Instance.tankLevel>=0)
- {
- Animator animator = GetComponent<Animator>();
- animator.runtimeAnimatorController = tankatate[PlayerManager.Instance.tankLevel];
-
- }
就可以实现简单的动画状态切换了。有不懂的或者有更好的实现方法的可以在下面留言,大家一起交流,一起进步。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。