Exemplo n.º 1
0
    /// <summary>
    /// 每帧的更新
    /// </summary>
    public override void update()
    {
        //先决条件
        if (soldier == null || soldier._data == null)
        {
            return;
        }

        //如果攻击目标为空,返回事件
        if (soldier._data.AttackTarget == null)
        {
            soldier.notifyEvent(this, ATTACK_TARGET_IS_NULL, null);
            return;
        }

        //如果目标在攻击范围外,返回事件
        //soldier._data.AttckDistance = 3f; // TODO
        if (Vector3.Distance(soldier.transform.position, soldier._data.AttackTarget.transform.position) > soldier._data.AttckDistance)
        {
            soldier.notifyEvent(this, ATTACK_TARGET_IS_OUT, null);
            return;
        }

        //攻击
        if (isAttack)
        {
            //CD减少
            ATKSpeed--;

            //如果攻击CD为0,开始1次攻击
            if (ATKSpeed <= 0)
            {
                //停止攻击
                isAttack = false;

                //面向敌人
                soldier.gameObject.transform.LookAt(soldier._data.AttackTarget.gameObject.transform);

                //播放攻击动作
                animator.Play("attack01");
            }
            else
            {
                //播放待机动作
                animator.Play("idle03");
            }
        }
    }
Exemplo n.º 2
0
    /// <summary>
    /// 每帧的更新
    /// </summary>
    public override void update()
    {
        //如果死亡
        if (_deadDelay <= 0)
        {
            _host.notifyEvent(this, DEAD_COMPLETE_EVENT, null);
            return;
        }

        //计时
        _deadDelay--;

        //播放死亡动画
        _host.GetComponent <Animator>().Play("die01");
    }