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

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

今天做红白机坦克大战项目,吃到五角星坦克会升级,这就涉及到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];

        }

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

 

  • 7
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值