/// <summary> /// MonoBehaviour 개체를 초기화합니다. /// </summary> void Start() { // 필드를 초기화합니다. _parent = GetComponentInParent <CameraZoneBorderParent>(); _database = DataBase.Instance; _stageManager = StageManager.Instance; _cameraFollow = Camera.main.GetComponent <CameraFollow>(); // 경계선 객체를 획득합니다. EdgeCollider2D border = GetComponent <EdgeCollider2D>(); Vector2[] points = border.points; // X 좌표가 같다면 수평 방향을 관리하는 경계입니다. if (points[0].x == points[1].x) { _isHorizontal = true; _border = points[0].x + transform.position.x; } // Y 좌표가 같다면 수직 방향을 관리하는 경계입니다. else if (points[0].y == points[1].y) { _isHorizontal = false; _border = points[1].y + transform.position.y; } // 그 외의 경우 예외 처리합니다. else { throw new Exception("타당하지 않은 CameraZoneBorder points 속성입니다."); } }
/// <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(); }