void Start() { // ゲームパラメータ初期化 Global.Init(); // 敵管理を生成 Enemy.parent = new TokenMgr <Enemy>(); Enemy.parent.AddToken("Enemy", 128); Enemy.parent.AddToken("Enemy2", 128); //Enemy2.parent = new TokenMgr<Enemy2>("Enemy2", 128); // ショット管理を生成 Shot.parent = new TokenMgr <Shot>("Shot", 128); // パーティクル管理を生成 Particle.parent = new TokenMgr <Particle>("Particle", 256); // タワー管理を生成 Tower.parent = new TokenMgr <Tower>("Tower", 64); Tower2.parent = new TokenMgr <Tower2>("Tower2", 64); // マップ管理を生成 // プレハブを取得 GameObject prefab = null; prefab = Util.GetPrefab(prefab, "Field"); // インスタンス生成 Field field = Field.CreateInstance2 <Field>(prefab, 0, 0); // マップ読み込み field.Load(); // パスを取得 _path = field.Path; _path2 = field.Path2; // コリジョンレイヤーを取得 _lCollision = field.lCollision; _lCollision2 = field.lCollision2; // カーソルを取得 _cursor = GameObject.Find("Cursor").GetComponent <Cursor>(); _cursor2 = GameObject.Find("Cursor2").GetComponent <Cursor2>(); // GUIを生成 _gui = new Gui(); _gui2 = new Gui2(); // 敵生成管理を生成 _enemyGenerator = new EnemyGenerator(_path); _enemyGenerator2 = new EnemyGenerator2(_path2); // Wave開始演出を取得 _waveStart = MyCanvas.Find <WaveStart>("TextWaveStart"); // 射程範囲カーソルを取得する _cursorRange = GameObject.Find("CursorRange").GetComponent <CursorRange>(); // 初期状態は選択しないモード ChangeSelMode(eSelMode.None); ChangeSelMode2(eSelMode2.None); //初期タワー配置 Tower.Add(-1.12f, -1.76f); Tower2.Add(1.12f, -1.76f); }
// 更新・メイン void UpdateMain() { // 敵生成管理の更新 _enemyGenerator.Update(); _enemyGenerator2.Update(); // カーソルの下にあるオブジェクトをチェック int mask = 1 << LayerMask.NameToLayer("Tower"); Collider2D col = Physics2D.OverlapPoint(_cursor.GetPosition(), mask); _selObj = null; if (col != null) { // 選択中のオブジェクトを格納 _selObj = col.gameObject; } // カーソルの下にあるオブジェクトをチェック int mask2 = 1 << LayerMask.NameToLayer("Tower"); Collider2D col2 = Physics2D.OverlapPoint(_cursor2.GetPosition(), mask2); _selObj2 = null; if (col2 != null) { // 選択中のオブジェクトを格納 _selObj2 = col2.gameObject; } if (Input.GetButtonDown("Done1p")) { if (_selObj != null) { // 砲台をクリックした // 選択した砲台オブジェクトを取得 _selTower = _selObj.GetComponent <Tower>(); // アップグレードモードに移行する ChangeSelMode(eSelMode.Upgrade); } else { switch (_selMode) { case eSelMode.Buy: if (_cursor.SelObj == null) { if (_cursor.Placeable) { if (_cursor._Placeable) { // 所持金を減らす int cost = Cost.TowerProduction(); if (Global.Money < cost) { // お金が足りないので通常モードに戻る ChangeSelMode(eSelMode.None); } else { Global.UseMoney(cost); // 何もないので砲台を配置 Tower.Add(_cursor.X, _cursor.Y); // 次のタワーの生産コストを取得する int cost2 = Cost.TowerProduction2(); if (Global.Money < cost) { // お金が足りないので通常モードに戻る ChangeSelMode(eSelMode.None); } } } } } break; case eSelMode.None: ChangeSelMode(eSelMode.Buy); break; case eSelMode.Upgrade: ChangeSelMode(eSelMode.None); break; } } } if (Input.GetButtonDown("Done2p")) { if (_selObj2 != null) { // 砲台をクリックした // 選択した砲台オブジェクトを取得 _selTower2 = _selObj2.GetComponent <Tower2>(); // アップグレードモードに移行する ChangeSelMode2(eSelMode2.Upgrade); } else { switch (_selMode2) { case eSelMode2.Buy: if (_cursor2.SelObj == null) { if (_cursor2.Placeable) { if (_cursor2._Placeable) { // 所持金を減らす int cost = Cost.TowerProduction(); if (Global.Money2 < cost) { // お金が足りないので通常モードに戻る ChangeSelMode2(eSelMode2.None); } else { Global.UseMoney2(cost); // 何もないので砲台を配置 Tower2.Add(_cursor2.X, _cursor2.Y); // 次のタワーの生産コストを取得する int cost2 = Cost.TowerProduction2(); if (Global.Money2 < cost2) { // お金が足りないので通常モードに戻る ChangeSelMode2(eSelMode2.None); } } } } } break; case eSelMode2.None: ChangeSelMode2(eSelMode2.Buy); break; case eSelMode2.Upgrade: ChangeSelMode2(eSelMode2.None); break; } } } if (Input.GetButtonDown("Range1p")) { OnClickRange(); } if (Input.GetButtonDown("Range2p")) { OnClickRange2(); } if (Input.GetButtonDown("Firerate1p")) { OnClickFirerate(); } if (Input.GetButtonDown("Firerate2p")) { OnClickFirerate2(); } if (Input.GetButtonDown("Power1p")) { OnClickPower(); } if (Input.GetButtonDown("Power2p")) { OnClickPower2(); } }