コード例 #1
0
    protected override void AIUpdate_fly_detect()
    {
        base.AIUpdate_fly_detect();
        float rand = GetAIRandomNumver();

        switch (aiState)
        {
        case AISTATE.AISELECT:
            if (rand < AddAIProbNum(aiStateFly_flyEnd * ChengeModeRate))
            {
                FlyMode_end();
            }
            else if (rand < AddAIProbNum(aiStateFly_approch))
            {
                SetAIState(AISTATE.APPROACH_DASH, 5.0f);
            }
            else if (rand < AddAIProbNum(aiStateFly_escape))
            {
                SetAIState(AISTATE.ESCAPE_DASH, 3.0f);
            }
            else if (rand < AddAIProbNum(aiStateFly_attack))
            {
                SetAIState(AISTATE.ATTACK, 20.0f);
            }

            break;

        case AISTATE.APPROACH_DASH:
            if (EnemyCtrl_fly.MoveToPlayer_X(10.0f, moveSpeed))
            {
                SetAIState(AISTATE.ATTACK, 20.0f);
            }
            break;

        case AISTATE.ESCAPE_DASH:
            if (nowTargetPos == null)
            {
                if (EnemyCtrl_fly.GetDistancePlayer_X() > 40.0f)
                {
                    SetAIState(AISTATE.APPROACH_DASH, 5.0f);
                    return;
                }
                EnemyCtrl_fly.SetDirectionToPl();
                nowTargetPos = EnemyCtrl_fly.GetPostionFromPl_NearMe(40.0f);
            }
            if (EnemyCtrl_fly.MoveToTarget_X_reverse(1.0f, (Vector2)nowTargetPos, moveSpeed * 0.8f))
            {
                nowTargetPos = null;
                SetAIState(AISTATE.ATTACK, 20.0f);
            }
            break;

        case AISTATE.WAIT:
            break;
        }
    }
コード例 #2
0
    protected override void AIUpdate_fly_attack()
    {
        base.AIUpdate_fly_attack();
        float rand = GetAIRandomNumver();

        if (rand < AddAIProbNum(aiStateFlyAt_dive))
        {
            EnemyCtrl_fly.SetDirectionToPl();
            animator.SetTrigger("At_dive");
            StartAttack();
        }
        else if (rand < AddAIProbNum(aiStateFlyAt_fire))
        {
            if (EnemyCtrl_fly.GetDistancePlayer_X() < 10.0f)
            {
                return;
            }
            EnemyCtrl_fly.SetDirectionToPl();
            animator.SetTrigger("At_fire_sky");
            StartAttack();
        }
    }
コード例 #3
0
    protected override void AIUpdate_attack()
    {
        base.AIUpdate_attack();
        float rand = GetAIRandomNumver();

        if (rand < AddAIProbNum(aiStateFrontPl_dash))
        {
            EnemyCtrl_fly.SetDirectionToPl();
            animator.SetTrigger("At_dash");
            StartAttack();
        }
        else if (rand < AddAIProbNum(aiStateFrontPl_head))
        {
            if (EnemyCtrl_fly.IsPlayerFront())
            {
                animator.SetTrigger("At_head");
                StartAttack();
            }
        }
        else if (rand < AddAIProbNum(aiStateFrontPl_tail))
        {
            if (!EnemyCtrl_fly.IsPlayerFront())
            {
                animator.SetTrigger("At_tail");
                StartAttack();
            }
        }
        else if (rand < AddAIProbNum(aiStateFrontPl_fire))
        {
            if (EnemyCtrl_fly.IsPlayerFront())
            {
                animator.SetTrigger("At_fire");
                StartAttack();
            }
        }
    }