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); }
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); }); }
public static void activate(EnemyEntity enemy) { enemy.game_object.SetActive(true); }
public static EnemyEntity create() { EnemyEntity enemy = EnemyFactory.createRandomEntity(); return(enemy); }
public static GameObject createGameObject(EnemyEntity entity) { var go = enemy_prefabs[entity.prefab_id]; return(Object.Instantiate(go)); }
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) } }; }