Пример #1
0
    /// <summary>
    /// MonoBehaviour 개체를 초기화 합니다.
    /// </summary>
    protected virtual void Start()
    {
        //
        _database               = DataBase.Instance;
        _stageManager           = StageManager.Instance;
        _camera                 = Camera.main;
        _camZ                   = _camera.transform.position.z;
        _cameraZoneParent       = CameraZoneParent.Instance;
        _cameraZoneBorderParent = CameraZoneBorderParent.Instance;
        _map    = _database.Map;
        _player = _stageManager.MainPlayer;

        // 카메라 관련 필드를 초기화합니다.
        {
            // 카메라 존 집합을 초기화합니다.
            CameraZone[] cameraZones = _cameraZoneParent.GetComponentsInChildren <CameraZone>();
            _cameraZones = new CameraZone[cameraZones.Length];
            foreach (CameraZone cameraZone in cameraZones)
            {
                // 음이 아닌 카메라 존 ID의 경우 집합에 추가합니다.
                int camZoneID = cameraZone._cameraZoneID;
                if (camZoneID >= 0)
                {
                    _cameraZones[cameraZone._cameraZoneID] = cameraZone;
                }
            }

            CameraZoneBorder[] borders = _cameraZoneBorderParent.GetComponentsInChildren <CameraZoneBorder>();
            foreach (CameraZoneBorder border in borders)
            {
                // 음이 아닌 식별자들에 대해서만 처리합니다.
                if (border._fromID >= 0 && border._toID >= 0)
                {
                    border._from = _cameraZones[border._fromID];
                    border._to   = _cameraZones[border._toID];
                }
            }

            // 시작 카메라 존을 맞춥니다.
            /// _startCameraZone = _cameraZones[0];
            _startCameraZone = _stageManager.GetCheckpointCameraZone
                                   (_database.GameManager.SpawnPositionIndex);
            if (_startCameraZone == null)
            {
                throw new Exception("시작 카메라 존이 설정되지 않았습니다.");
            }

            /// _currentCameraZone = _startCameraZone;
            UpdateCameraZone(_startCameraZone, false);
        }


        // 카메라 뷰 박스를 초기화합니다.
        InitializeCameraViewBox();
    }
Пример #2
0
    /// <summary>
    /// MonoBehaviour 개체를 초기화 합니다.
    /// </summary>
    void Start_dep()
    {
        // 일반 필드를 초기화합니다.
        {
            _camera = Camera.main; /// gameObject.GetComponent<Camera>();
            _camZ   = _camera.transform.position.z;

            _map    = _database.Map;
            _player = _map.Player;
        }

        // 카메라 관련 필드를 초기화합니다.
        {
            // 카메라 뷰 박스의 크기를 초기화합니다.
            float frustumHeight = Mathf.Abs(2.0f * _camera.transform.position.z * Mathf.Tan(_camera.fieldOfView * 0.5f * Mathf.Deg2Rad));
            float frustumWidth  = Mathf.Abs(frustumHeight * _camera.aspect);
            _cameraViewBox.size = new Vector2(frustumWidth, frustumHeight);
            _cameraViewBox.transform.position = new Vector3
                                                    (_camera.transform.position.x, _camera.transform.position.y, 0);

            // 카메라 존 집합을 초기화합니다.
            CameraZone[] cameraZones = _cameraZoneParent.GetComponentsInChildren <CameraZone>();
            _cameraZones = new CameraZone[cameraZones.Length];
            foreach (CameraZone cameraZone in cameraZones)
            {
                _cameraZones[cameraZone._cameraZoneID] = cameraZone;
            }

            CameraZoneBorder[] borders = _cameraZoneBorderParent.GetComponentsInChildren <CameraZoneBorder>();
            foreach (CameraZoneBorder border in borders)
            {
                border._from = _cameraZones[border._fromID];
                border._to   = _cameraZones[border._toID];
            }

            // 시작 카메라 존을 맞춥니다.
            _startCameraZone = _cameraZones[0];
            if (_startCameraZone == null)
            {
                throw new Exception("시작 카메라 존이 설정되지 않았습니다.");
            }

            /// _currentCameraZone = _startCameraZone;
            UpdateCameraZone_dep(_startCameraZone, false);
        }
    }