Пример #1
0
        /// <summary>
        /// 指定された部屋とその周辺をアクティブ化させる
        /// それ以外は非アクティブ状態にしておく
        /// </summary>
        private void SwitchActiveRoom(PlayRoom arg_playRoom)
        {
            if (arg_playRoom == null)
            {
                Debug.LogError("部屋がNULLです");
                return;
            }

            m_activePlayroom = arg_playRoom;

            List <uint> m_sideRoomId = m_activePlayroom.GetSideRoomsId();

            foreach (PlayRoom playRoom in m_playRooms)
            {
                if (playRoom == m_activePlayroom)
                {
                    playRoom.gameObject.SetActive(true);
                    continue;
                }
                if (m_sideRoomId.Contains(playRoom.Id))
                {
                    playRoom.gameObject.SetActive(true);
                }
                else
                {
                    playRoom.gameObject.SetActive(false);
                }
            }
        }
Пример #2
0
        /// <summary>
        /// 初期化
        /// </summary>
        /// <param name="arg_player">プレイヤー</param>
        /// <param name="arg_defaultRoomId">プレイさせる小部屋ID</param>
        /// <param name="arg_onGoalAction">ゴール時のコールバック</param>
        public void Initialize(Player arg_player, uint arg_defaultRoomId, System.Action <object> arg_onGoalAction)
        {
            if (arg_player == null)
            {
                Debug.LogError("プレイヤーが見つかりません");
                return;
            }

            if (arg_onGoalAction == null)
            {
                Debug.LogError("コールバックが設定されていません");
                return;
            }

            m_player       = arg_player;
            m_onGoalAction = arg_onGoalAction;

            #region ステージ情報の取得
            m_startPoints = transform.GetComponentsInChildren <StartPoint>().ToList();
            m_goalPoints  = transform.GetComponentsInChildren <GoalPoint>().ToList();
            m_playRooms   = transform.GetComponentsInChildren <PlayRoom>().ToList();

            foreach (GoalPoint goalPoint in m_goalPoints)
            {
                goalPoint.Initialize(this.OnGoalPoint);
            }
            foreach (PlayRoom playRoom in m_playRooms)
            {
                playRoom.Initialize(this.OnRoomEnter);
            }

            //初期リスタート地点を設定
            PlayRoom defaultRoom = m_playRooms.Find(_ => _.Id == arg_defaultRoomId);

            if (defaultRoom == null)
            {
                Debug.LogError("指定されたIDの部屋が見つかりません:" + "<color=red>" + arg_defaultRoomId + "</color>");
            }

            SwitchActiveRoom(defaultRoom);

            #endregion

            if (m_activePlayroom == null)
            {
                Debug.LogError("指定されたIDのスタート地点が見つかりません:" + "<color=red>" + arg_defaultRoomId + "</color>");
            }

            if (CameraPosController.Instance == null)
            {
                Debug.LogError("カメラ遷移の機能が使用できません");
            }
            CameraPosController.Instance.SetTargetObject(m_player.gameObject);

            PlayerGenerate();

            StartCoroutine(OnUpdate());
        }
Пример #3
0
        //-------------------------------------------
        //	以下、コールバック
        //-------------------------------------------

        /// <summary>
        /// 部屋に入ったときの処理
        /// 入ったときにコールバックとして呼ばれる
        /// </summary>
        /// <param name="arg_nextRoom"></param>
        private void OnRoomEnter(PlayRoom arg_nextRoom)
        {
            if (arg_nextRoom == m_activePlayroom)
            {
                return;
            }
            UpdatePlayingRoom(m_activePlayroom.Id);
            //スムーズなカメラ遷移を開始させる
            CameraPosController.Instance.SetTargetAndStart((int)arg_nextRoom.Id);

            this.SwitchActiveRoom(arg_nextRoom);
        }