Exemplo n.º 1
0
        public static void set_direction(EnemyEntity enemy, SpawnerPoint spawner)
        {
            var pos = new Vector3(spawner.position.x, enemy.game_object.transform.position.y, spawner.position.z);

            //enemy.game_object.transform.position = spawner.position;
            enemy.game_object.transform.position = pos;
            enemy.game_object.transform.Rotate(spawner.direction);
        }
Exemplo n.º 2
0
        public static void startSpawn()
        {
            // ゲームステージサービスから敵の数もらう
            int enemy_num = GameStageService.status("enemy_num");

            // スポーン中なら現在のスポーンを中止
            stopSpawn();

            Debug.Log("EnemyService.startSpawn()");

/*
 *          // 1秒に1回、x回まで処理する(敵の出現数が上限を超えてたら待つ)
 *          spawn_disposable = Observable.Interval(System.TimeSpan.FromSeconds(1)).Take(enemy_num).Subscribe(y => {
 *              // ランクに合わせて敵を生成
 *              EnemyEntity enemy = EnemyService.create();
 *              // 左から出るか前から出るかを決定
 *              SpawnerPoint point = EnemyService.random_pos();
 *              // 敵オブジェクトに設定
 *              EnemyService.set_direction(enemy, point);
 *              // 出撃
 *              EnemyService.activate(enemy);
 *          });
 */
            int spawn_count = 0;

            // (敵の出現数が上限を超えてたら待つ)が出来ていないので修正必要
            // スポーンタイマーは基本的に無制限に動作するようにし、動作内で敵を上限まで出現させたかどうか判定させる
            // 出現済みで生きてる敵の数を数えて、出現上限に達していたら次まで待つ
            // 出現済みで生きてる敵の数が出現上限数以下で、かつ生成上限にまだ達していなければ敵を生成
            spawn_disposable = Observable.Interval(System.TimeSpan.FromSeconds(1)).Subscribe(x => {
                // 生成上限に達していたら終了
                if (enemy_num <= spawn_count)
                {
                    return;
                }
                spawn_count += 1;

                // アクティブな敵が出現上限に達していたら終了
                if (spawn_limit <= GameObject.FindGameObjectsWithTag("Enemy").Length)
                {
                    return;
                }

                // ランクに合わせて敵を生成
                EnemyEntity enemy = EnemyService.create();
                // 左から出るか前から出るかを決定
                SpawnerPoint point = EnemyService.random_pos();
                // 敵オブジェクトに設定
                EnemyService.set_direction(enemy, point);
                // 出撃
                EnemyService.activate(enemy);
            });
        }
Exemplo n.º 3
0
 public static void activate(EnemyEntity enemy)
 {
     enemy.game_object.SetActive(true);
 }
Exemplo n.º 4
0
        public static EnemyEntity create()
        {
            EnemyEntity enemy = EnemyFactory.createRandomEntity();

            return(enemy);
        }
Exemplo n.º 5
0
        public static GameObject createGameObject(EnemyEntity entity)
        {
            var go = enemy_prefabs[entity.prefab_id];

            return(Object.Instantiate(go));
        }
Exemplo n.º 6
0
        public static void init(List <GameObject> enemyPrefabs)
        {
            enemy_prefabs = enemyPrefabs;

            var d_bat = new EnemyEntity {
                name = "バット",
                type = EnemyType.D_Bat,
                //prefab_path = "Character/Enemy/D_Bat/D_Bat",
                prefab_id    = 0,
                attack_voice = "Monster 3",
                damage_voice = "Beast Hit 3",
                dead_voice   = "Beast Death 1",
            };

            var d_rabbit = new EnemyEntity {
                name = "ラビット",
                type = EnemyType.D_Rabbit,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 1,
                attack_voice = "Monster 1",
                damage_voice = "Beast Hit 1",
                dead_voice   = "Beast Death 2",
            };

            var d_ghost = new EnemyEntity {
                name = "ゴースト",
                type = EnemyType.D_Ghost,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 2,
                attack_voice = "Monster 2",
                damage_voice = "Beast Hit 2",
                dead_voice   = "Beast Death 3",
            };

            var d_rhino = new EnemyEntity {
                name = "リノ",
                type = EnemyType.D_Rhino,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id       = 3,
                attack_distance = 2f,
                attack_voice    = "Beast 4",
                damage_voice    = "Beast Hit 4",
                dead_voice      = "Beast Death 3",
            };

            var d_reptile = new EnemyEntity {
                name = "レプタイル",
                type = EnemyType.D_Reptile,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 4,
                attack_voice = "Beast 2",
                damage_voice = "Beast Hit 3",
                dead_voice   = "Beast Death 2",
            };

            var c_wolf = new EnemyEntity {
                name = "ウルフ",
                type = EnemyType.C_Wolf,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id       = 5,
                attack_distance = 1.5f,
                attack_voice    = "Beast 3",
                damage_voice    = "Beast Hit 1",
                dead_voice      = "Beast Death 1",
            };

            var c_slime = new EnemyEntity {
                name = "スライム",
                type = EnemyType.C_Slime,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 6,
                attack_voice = "Monster 4",
                damage_voice = "Beast Hit 4",
                dead_voice   = "Beast Death 4",
            };

            var d_crab = new EnemyEntity {
                name = "シェルクラブ",
                type = EnemyType.D_Crab,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 7,
                attack_voice = "Monster 1",
                damage_voice = "Beast Hit 1",
                dead_voice   = "Beast Death 2",
            };

            var green_dragon = new EnemyEntity {
                name = "グリーンドラゴン",
                type = EnemyType.GreenDragon,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 8,
                attack_voice = "Monster 5",
                damage_voice = "Beast Hit 1",
                dead_voice   = "Beast Death 2",
            };

            var grey_dragon = new EnemyEntity {
                name = "グレイドラゴン",
                type = EnemyType.GreyDragon,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 9,
                attack_voice = "Monster 6",
                damage_voice = "Beast Hit 1",
                dead_voice   = "Beast Death 3",
            };

            var red_dragon = new EnemyEntity {
                name = "レッドドラゴン",
                type = EnemyType.RedDragon,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 10,
                attack_voice = "Monster 5",
                damage_voice = "Beast Hit 1",
                dead_voice   = "Beast Death 1",
            };

            var albino_dragon = new EnemyEntity {
                name = "アルビノドラゴン",
                type = EnemyType.AlbinoDragon,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 11,
                attack_voice = "Monster 6",
                damage_voice = "Beast Hit 1",
                dead_voice   = "Beast Death 4",
            };

            var skelton = new EnemyEntity {
                name = "スケルトン",
                type = EnemyType.Skelton,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 12,
                attack_voice = "Monster 2",
                damage_voice = "Beast Hit 2",
                dead_voice   = "Beast Death 2",
            };

            var goblin = new EnemyEntity {
                name = "ゴブリン",
                type = EnemyType.Goblin,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 13,
                attack_voice = "Monster 4",
                damage_voice = "Beast Hit 3",
                dead_voice   = "Beast Death 4",
            };

            var hobgoblin = new EnemyEntity {
                name = "ホブゴブリン",
                type = EnemyType.Hobgoblin,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 14,
                attack_voice = "Monster 4",
                damage_voice = "Beast Hit 3",
                dead_voice   = "Beast Death 4",
            };

            var troll = new EnemyEntity {
                name = "トロール",
                type = EnemyType.Troll,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 15,
                attack_voice = "Monster 3",
                damage_voice = "Beast Hit 4",
                dead_voice   = "Beast Death 3",
            };

            var mushroom = new EnemyEntity {
                name = "マッシュルーム",
                type = EnemyType.Mushroom,
                //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
                prefab_id    = 16,
                attack_voice = "Monster 3",
                damage_voice = "Beast Hit 3",
                dead_voice   = "Beast Death 1",
            };

/*
 *          var spider = new EnemyEntity {
 *              name = "スパイダー",
 *              type = EnemyType.Spider,
 *              //prefab_path = "Character/Enemy/D_Rabbit/D_Rabbit",
 *              prefab_id = 17,
 *              attack_voice = "Monster 1",
 *              damage_voice = "Beast Hit 1",
 *              dead_voice = "Beast Death 2",
 *          };
 */
            base_resources = new Dictionary <Rank, Dictionary <EnemyType, EnemyEntity> > {
                { Rank.D, new Dictionary <EnemyType, EnemyEntity> {
                      { EnemyType.D_Crab, d_crab },
                      { EnemyType.D_Bat, d_bat },
                      { EnemyType.D_Rabbit, d_rabbit },
                      { EnemyType.D_Ghost, d_ghost },
                  } },

                { Rank.C, new Dictionary <EnemyType, EnemyEntity> {
                      { EnemyType.C_Slime, c_slime },
                      { EnemyType.C_Wolf, c_wolf },
                      { EnemyType.Mushroom, mushroom },
                      //{ EnemyType.Spider, spider },
                  } },

                { Rank.B, new Dictionary <EnemyType, EnemyEntity> {
                      { EnemyType.Goblin, goblin },
                      { EnemyType.Hobgoblin, hobgoblin },
                      { EnemyType.D_Bat, d_bat },
                  } },

                { Rank.A, new Dictionary <EnemyType, EnemyEntity> {
                      { EnemyType.D_Rhino, d_rhino },
                      { EnemyType.D_Reptile, d_reptile },
                      { EnemyType.Troll, troll },
                  } },

                { Rank.S, new Dictionary <EnemyType, EnemyEntity> {
                      { EnemyType.GreenDragon, green_dragon },
                      { EnemyType.GreyDragon, grey_dragon },
                      { EnemyType.RedDragon, red_dragon },
                      { EnemyType.AlbinoDragon, albino_dragon },
                  } },
            };

            base_random = new Dictionary <Rank, Tuple <int, int> > {
                { Rank.D, new Tuple <int, int>(0, 8) },
                { Rank.C, new Tuple <int, int>(8, 16) },
                { Rank.B, new Tuple <int, int>(16, 32) },
                { Rank.A, new Tuple <int, int>(32, 64) },
                { Rank.S, new Tuple <int, int>(64, 128) }
            };
        }