Exemple #1
0
    /// <summary>
    /// 実際に攻撃を行い、ゲームを進める
    /// </summary>
    /// <param name="on_first">1マス先を取るのに使用</param>
    void Attack_Process(int adjust_value1, int adjust_value2)
    {
        var enemy_manager = new Enemy_Manager();

        // 隣接してるエネミーを調べる
        GameObject side_enemy = enemy_manager.Find_Enemy(player_script.position.x + adjust_value1,
                                                         player_script.position.y + adjust_value2);
        // 隣接してるエネミーのステータスを取ってくる
        var enemy_status = side_enemy.GetComponent <Enemy_Controller>().enemy_status;

        enemy_status.hit_point -= damage_calculation.Damage(player_status.attack,
                                                            enemy_status.defence);
        // ダメージのログを流す
        Log_Scroll.Player_Attack_Log(player_status, side_enemy, damage_calculation.Damage(player_status.attack,
                                                                                          enemy_status.defence));

        // 攻撃した敵が死んでいたら経験値を取得
        if (enemy_status.hit_point <= 0)
        {
            // レベルアップより先に経験値を取得
            Log_Scroll.Get_Experience_Point(player_status, side_enemy, enemy_status.experience_point);

            // 実際に経験値を取得し、次レベルに必要な経験値量に達しているかを見る
            player_status.Add_Experience_Point(enemy_status.experience_point);

            // ダンジョンに出現中の敵のリストを取得
            List <GameObject> enemy_list = Enemy_Manager.Instance.enemies;
            // プレイヤーに隣接しているものを抽出
            enemy_manager.Dead_Enemy(enemy_list.IndexOf(side_enemy));
        }
        // 移動状態に戻す
        player_action.Set_Action(ePlayer_State.Move);
    }
Exemple #2
0
    /// <summary>
    /// エネミーの行動を制御
    /// </summary>
    public void Action()
    {
        for (int i = 0; i < enemy_manager.enemies.Count; ++i)
        {
            // 全部Getしていたら重いのでこれを使う
            var enemy_status = enemy_manager.enemies[i].GetComponent <Enemy_Controller>().enemy_status;

            // AIによって入れる処理を変える
            switch (enemy_status.AI_pattern)
            {
            case 1:
                if (Search_Player(i))
                {
                    player_status.hit_point.Value -= damage_calculation.Damage(enemy_status.attack, player_status.defence);
                    break;
                }
                else
                {
                    enemy_manager.enemies[i].GetComponent <Enemy_Controller>().enemy_move.Move_Action(i);
                    Set_Enemy_State(enemy_manager.enemies[i].GetComponent <Enemy>().mode, enemy_manager.enemies[i].GetComponent <Enemy>().Feet);
                    break;
                }
            }
            // ターンを終える
            enemy_status.End_Turn();
        }
    }