Exemplo n.º 1
0
    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);
    }
Exemplo n.º 2
0
    // 更新・メイン
    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();
        }
    }