コード例 #1
0
        // エリアを作成
        private BattleAreaModel CreateArea(GameObject stadiumPrefab, GameObject betteryPrefab, GameObject castlePrefab, bool isEnemy = false)
        {
            // マップのもとになるものを作成
            GameObject mainMap = new GameObject();

            mainMap.transform.SetParent(GameObject.Find("MainGameObjects").transform);
            mainMap.name = "mainMap";

            // 砲台をその傘下に追加
            var bettery = CreateBettery(betteryPrefab, isEnemy);

            bettery.View.RootTransform.SetParenet(mainMap.transform);

            // マップをその傘下に追加
            var map = CreateMap(stadiumPrefab, isEnemy);

            map.View.RootTransform.SetParenet(mainMap.transform);

            // 城をその傘下に追加
            var castle = CreateObject(castlePrefab);

            castle.transform.SetParent(mainMap.transform);

            // 敵の場合回転
            if (isEnemy)
            {
                mainMap = Rotate180(mainMap);
            }

            return(BattleAreaModel.CreateArea(bettery, map));
        }
コード例 #2
0
        // メソッド --------------------------------

        // ゲームの各エリアを設定するが。。ここでいいのか?
        public void Initialize(
            BattleAreaModel player,
            BattleAreaModel enemy,
            BattleMovableTargetModel movableTarget
            )
        {
            this.playerAreaModel = player;
            this.enemyAreaModel  = enemy;
            this.movableTarget   = movableTarget;
        }
コード例 #3
0
        private void ExtrusionZakoFromArea(BattleAreaModel area, List <BattleCharacterModel> models)
        {
            if (area.Map.Life.IsDead())
            {
                return;
            }

            var areaCollision = area.Map.View.GetCollision();

            foreach (var zako in models)
            {
                // 衝突判定を行わない場合はしない
                if (!zako.View.IsCollisionEnable)
                {
                    continue;
                }

                var zakoCollision = zako.View.GetCollision();

                if (areaCollision.IsHamidashi(zakoCollision))
                {
                    // 雑魚中心からエリア中心までのベクトル
                    Vector3 vecFromAreaToZako = areaCollision.Position - zakoCollision.Position;

                    // 雑魚中心からエリア中心までの距離
                    float lengthFromAreaToZako = (vecFromAreaToZako).magnitude;

                    // 制限距離
                    float limitedLength = areaCollision.Radius - zakoCollision.Radius;

                    // はみ出し距離
                    float hamidashi = lengthFromAreaToZako - limitedLength;

                    // はみ出しの解除
                    zako.View.RootTransform.SetPosition(zako.View.RootTransform.GetPosition() + vecFromAreaToZako.normalized * hamidashi * MapCollisionSmooth);
                }
            }
        }