(8) 动画状态机

1. 全局修改父动画名称:

获取当前动画状态

if (!enemy.animator.GetCurrentAnimatorStateInfo(0).IsName("idle"))

{

enemy.animState = 1;

enemy.MoveToTarget();

}

2. 自然动画退出如果不设置条件,动画会到下一个动作,假如设置过条件,则需满足条件,才会到下一个动画

3. 相对运动,由于游戏过程中,当前目标的距离实时在变,所以每次取实时的值

if (enemy.attackList.Count == 0)

        {

            enemy.TransitionToState(enemy.patrolState);

        }

        if (enemy.attackList.Count > 1)

        {

            for (int i = 0; i < enemy.attackList.Count; i++)

            {

                //相对运动,坐标距离实时在变

                if (Mathf.Abs(enemy.transform.position.x - enemy.attackList[i].position.x) <

                Mathf.Abs(enemy.transform.position.x - enemy.targetPoint.position.x))

                {

                    enemy.targetPoint = enemy.attackList[i];

                }

            }

        }

4. 攻击间隔,与距离向量判断距离

public void AttackAction()

    {

        if (Vector2.Distance(transform.position, targetPoint.position) < attackRange)

        {

            if (Time.time > nextAttack)

            {

                Debug.Log("attack action");

                //播放攻击动画

                nextAttack = Time.time + attackRate;

            }

        }

    }

5. 动画覆盖

创建一个weight为1的Attack Layer层,默认状态留空

6. 判断当前播放的动画

if (!animator.GetCurrentAnimatorStateInfo(0).IsName("bomb_off"))

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值