Ejemplo n.º 1
0
        void EditCombatZone(CameraZone _zone)
        {
            EditorGUI.BeginChangeCheck();
            Vector3 cornerA = Handles.FreeMoveHandle(_zone.cornerA_access, Quaternion.identity, 1, Vector3.zero, Handles.SphereHandleCap);
            Vector3 cornerB = Handles.FreeMoveHandle(_zone.cornerB_access, Quaternion.identity, 1, Vector3.zero, Handles.SphereHandleCap);

            if (Tools.current == Tool.Rotate)
            {
                Tools.current = Tool.None;
            }

            Quaternion rot = Handles.Disc(_zone.transform.rotation, _zone.transform.position, new Vector3(0, 1, 0), 3, false, 0);

            Handles.Label(cornerA, "Corner A");
            Handles.Label(cornerB, "Corner B");

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(_zone, "Change Look At Target Position");
                float deltaRotation = Quaternion.Angle(rot, _zone.transform.rotation);
                float dir           = (rot.eulerAngles.y < _zone.transform.rotation.eulerAngles.y) ? -1 : 1;
                if (deltaRotation != 0)
                {
                    cornerA = RotatePointAroundPivot(cornerA, _zone.transform.position, new Vector3(0, deltaRotation * dir, 0));
                    cornerB = RotatePointAroundPivot(cornerB, _zone.transform.position, new Vector3(0, deltaRotation * dir, 0));
                }
                _zone.cornerA_access          = cornerA;
                _zone.cornerB_access          = cornerB;
                _zone.transform.localRotation = rot;
                _zone.Update();
            }
        }
Ejemplo n.º 2
0
    // Use this for initialization
    void Start()
    {
        agent = gameObject.GetComponent <NavMeshAgent>();
        cz    = gameObject.GetComponent <CameraZone>();

        MoveToNextNode();
    }
Ejemplo n.º 3
0
    /// <summary>
    /// 사용자 정의 속성을 다룹니다.
    /// </summary>
    /// <param name="gameObject">대상 GameObject입니다.</param>
    /// <param name="customProperties">사용자 정의 속성 딕셔너리입니다.</param>
    public override void HandleCustomProperties(GameObject gameObject, IDictionary <string, string> customProperties)
    {
        // 자신이 관리할 객체가 아니라면 종료합니다.
        if (IsValid(customProperties) == false)
        {
            return;
        }

        // 사용할 변수를 선언합니다.
        CameraZone component = gameObject.GetComponent <CameraZone>();

        // 속성을 업데이트합니다.
        component._cameraZoneID = GetIntValue(customProperties, "_cameraZoneID");

        component._isCheckpoint    = GetBooleanValue(customProperties, "_Checkpoint");
        component._checkpointIndex = GetIntValue(customProperties, "_CheckpointIndex");

        component._isTopBounded    = GetBooleanValue(customProperties, "_isTopBounded");
        component._isTopFirst      = GetBooleanValue(customProperties, "_isTopFirst");
        component._isLeftBounded   = GetBooleanValue(customProperties, "_isLeftBounded");
        component._isLeftFirst     = GetBooleanValue(customProperties, "_isLeftFirst");
        component._isRightBounded  = GetBooleanValue(customProperties, "_isRightBounded");
        component._isRightFirst    = GetBooleanValue(customProperties, "_isRightFirst");
        component._isBottomBounded = GetBooleanValue(customProperties, "_isBottomBounded");
        component._isBottomFirst   = GetBooleanValue(customProperties, "_isBottomFirst");
    }
Ejemplo n.º 4
0
 public static void ClearCameraZone(CameraZone cz)
 {
     if (cameraZone == cz)
     {
         ClearCameraZone();
     }
 }
Ejemplo n.º 5
0
 public void SetZoomArea(CameraZone zone)
 {
     if (camZone != zone)
     {
         camZone = zone;
         StartCoroutine(_animateSize(zone.zoomSize, zone.zoomDuration, zone));
     }
 }
 /// <summary>
 /// Initialise this instance.
 /// </summary>
 protected override void Init()
 {
     if (transform.parent != null)
     {
         parentZone = transform.parent.GetComponentInParent<CameraZone> ();
     }
     if (parentZone == null) Debug.LogError ("A CameraTransitionPoint must be the child of a CameraZone");
 }
Ejemplo n.º 7
0
    void OnTriggerEnter2D(Collider2D other)
    {
        if (other.gameObject == Player.S.gameObject) {
            CameraZone.current = this;

            MainCam.S.LockCamera(position, scale);
        }
    }
Ejemplo n.º 8
0
    public void RemoveZone(CameraZone zone)
    {
        _currentZones.Remove(zone);

        if (_currentZones.Count > 0)
        {
            _currentZones.Last().ResetMove();
        }
    }
Ejemplo n.º 9
0
    private void HandlePlayerEnterOffice(CameraZone zone)
    {
        if (zone == RegionManager.Instance.brutusOffice)
        {
            RegionManager.Instance.OnPlayerEnterZone -= HandlePlayerEnterOffice;

            StartCoroutine(MissionManager.Instance.DisablePlayerMovementDuringCutscene(onEnterCutscene));
        }
    }
Ejemplo n.º 10
0
    private void WaitForPlayerToLeaveMap(CameraZone zone)
    {
        if (RegionManager.Instance.GetPlayerCurrentZone() != null)
        {
            return;
        }
        RegionManager.Instance.OnPlayerExitZone -= WaitForPlayerToLeaveMap;

        StartCoroutine(GameOver());
    }
Ejemplo n.º 11
0
 private void Awake()
 {
     arenaFinished    = false;
     currentWaveIndex = -1;
     zone             = GetComponentInChildren <CameraZone>();
     if (startOnTriggerEnter && zone != null)
     {
         zone.onZoneActivation.AddListener(StartArena);
     }
 }
Ejemplo n.º 12
0
    void OnTriggerExit2D(Collider2D other)
    {
        if (CameraZone.current != this) return;

        if (other.gameObject == Player.S.gameObject) {
            MainCam.S.ReleaseCameraLock();

            CameraZone.current = null;
        }
    }
Ejemplo n.º 13
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();
    }
Ejemplo n.º 14
0
    static void GenerateCombatZone()
    {
        //Restricted tool list
        List <Tool> i_restrictedTools = new List <Tool>();

        i_restrictedTools.Add(Tool.Move);
        i_restrictedTools.Add(Tool.Rotate);
        i_restrictedTools.Add(Tool.Scale);

        //Generates main zone object
        GameObject i_newZone = new GameObject();

        i_newZone.name = "Fight Zone";
        i_newZone.AddComponent <ToolRestrictor>().restrictedTools = i_restrictedTools;

        //Add wave component
        i_newZone.AddComponent <WaveController>();

        //Generates zone selector object
        GameObject i_zoneSelector = new GameObject();

        i_zoneSelector.name = "Camera zone";
        i_zoneSelector.transform.SetParent(i_newZone.transform);
        CameraZone camZone = i_zoneSelector.AddComponent <CameraZone>();

        camZone.GenerateZone(CameraCustomType.Combat);

        //Generate the camera pivot
        GameObject i_cameraPivot = new GameObject();

        i_cameraPivot.name = "Camera pivot";
        i_cameraPivot.transform.SetParent(i_newZone.transform);
        i_cameraPivot.AddComponent <ToolRestrictor>().restrictedTools = i_restrictedTools;

        //Generate the virtual camera
        GameObject i_virtualCamera = new GameObject();

        i_virtualCamera.name = "Virtual camera";
        i_virtualCamera.transform.SetParent(i_cameraPivot.transform);
        CinemachineVirtualCamera virtualCameraScript = i_virtualCamera.AddComponent <CinemachineVirtualCamera>();

        virtualCameraScript.m_Lens.FieldOfView  = 60;
        i_virtualCamera.transform.localPosition = new Vector3(0, 20, -30);
        i_virtualCamera.transform.localRotation = Quaternion.Euler(30, 0, 0);

        CameraBehaviour cam = i_virtualCamera.AddComponent <CameraBehaviour>();

        cam.pivot = i_cameraPivot.transform;
        cam.InitCamera(CameraCustomType.Combat, camZone);
        camZone.linkedCameraBehaviour = cam;

        i_newZone.transform.position = new Vector3(0, 0.5f, 0);
        Selection.activeGameObject   = i_zoneSelector;
    }
Ejemplo n.º 15
0
    /// <summary>
    /// 카메라 존을 업데이트합니다.
    /// </summary>
    /// <param name="cameraZone"></param>
    public void UpdateCameraZone_dep(CameraZone cameraZone, bool beginTransition)
    {
        _currentCameraZone       = cameraZone;
        _currentCameraZone_Unity = _currentCameraZone;

        // 카메라 전이 애니메이션을 시작합니다.
        if (beginTransition)
        {
            _transitioning     = true;
            _transitioningTime = 0f;
        }
    }
Ejemplo n.º 16
0
    IEnumerator <WaitForSeconds> _animateSize(float size, float duration, CameraZone zone)
    {
        float startT    = Time.timeSinceLevelLoad;
        float progress  = 0;
        float startSize = orthoGraphicSizeAreaTarget;

        while (progress < 1f && zone == camZone)
        {
            progress = Mathf.Clamp01((Time.timeSinceLevelLoad - startT) / duration);
            orthoGraphicSizeAreaTarget = Mathf.Lerp(startSize, size, progress);
            yield return(new WaitForSeconds(0.0015f));
        }
        orthoGraphicSizeAreaTarget = size;
    }
Ejemplo n.º 17
0
    void GenPrefabs()
    {
        List <MapPos> Generated = new List <MapPos>();

        int prefabX;
        int prefabY;
        int mapX = 0;
        int mapY = 0;

        for (int y = 0; y < mapData.height; y = y + 2)
        {
            for (int x = 0; x < mapData.width; x = x + 2)
            {
                MapPos cPos = new MapPos(x, y);
                if (mapX == (mapData.width / 2) + 1)
                {
                    mapX = 0;
                    mapY++;
                }

                prefabX = mapX * MapData.ROOMWIDTH;
                prefabY = mapY * MapData.ROOMHEIGHT;
                GameObject go;
                if (mapData.LargeRoomPositions.Contains(cPos))
                {
                    Generated.AddRange(getLargeRoomPositions(x, y));
                    go = GenRoom(prefabX, prefabY + MapData.ROOMHEIGHT, _64x64[mapData.Rng.Next(0, _64x64.Count)], true, cPos);
                    CameraZone    camZone = go.GetComponent <CameraZone>();
                    BoxCollider2D camColl = go.GetComponent <BoxCollider2D>();

                    camZone.zoneWidth  = MapData.ROOMWIDTH * 2;
                    camZone.zoneHeight = MapData.ROOMHEIGHT * 2;
                    camColl.size       = new Vector2(MapData.ROOMWIDTH * 2, MapData.ROOMHEIGHT * 2);
                    camColl.offset     = new Vector2(MapData.ROOMWIDTH, -MapData.ROOMHEIGHT);
                }
                else if (mapData.Map[x, y] == 1 && !Generated.Contains(cPos))
                {
                    go = GenRoom(prefabX, prefabY, _32x32[mapData.Rng.Next(0, _32x32.Count)], false, cPos);
                    if (cPos.Equals(StartPos))
                    {
                        CameraZone camZone = go.GetComponent <CameraZone>();
                        GameObject.FindGameObjectWithTag("MainCamera").GetComponent <CameraController>().curCamZone = camZone;
                    }
                }

                mapX++;
            }
        }
    }
Ejemplo n.º 18
0
        protected virtual void OnSceneGUI()
        {
            CameraZone i_zone = (CameraZone)target;

            switch (i_zone.type)
            {
            case CameraCustomType.Combat:
                EditCombatZone(i_zone);
                break;

            case CameraCustomType.Circle:
                EditCircleZone(i_zone);
                break;
            }
        }
Ejemplo n.º 19
0
 public static bool DoesOverlapAnyZone(Vector2 point, ref CameraZone active)
 {
     for (int z = 0; z < All.Count; z++)
     {
         for (int i = 0; i < All[z].colliders.Length; i++)
         {
             if (All[z].colliders[i].OverlapPoint(point))
             {
                 active = All[z];
                 return(true);
             }
         }
     }
     active = null;
     return(false);
 }
Ejemplo n.º 20
0
        void EditCircleZone(CameraZone _zone)
        {
            if (Tools.current == Tool.Move)
            {
                Tools.current = Tool.None;
            }
            EditorGUI.BeginChangeCheck();
            Vector3 position = Handles.PositionHandle(_zone.transform.position, _zone.transform.rotation);

            if (EditorGUI.EndChangeCheck())
            {
                Undo.RecordObject(_zone, "Change Look At Target Position");
                _zone.transform.position = position;
                _zone.Update();
            }
        }
Ejemplo n.º 21
0
    private void HandleEnterKitchen(CameraZone zone)
    {
        if (zone != RegionManager.Instance.kitchen)
        {
            return;
        }

        RegionManager.Instance.OnPlayerEnterZone -= HandleEnterKitchen;

        if (startCutscenePlayed)
        {
            return;
        }

        GameManager.Instance.GetPlayerController().EnablePlayerInput = false;
        CameraManager.Instance.OnBlendingComplete += StartDenturesCutscene;
    }
Ejemplo n.º 22
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);
        }
    }
Ejemplo n.º 23
0
    /// <summary>
    /// 카메라 존을 업데이트합니다.
    /// </summary>
    /// <param name="cameraZone"></param>
    public void UpdateCameraZone(CameraZone cameraZone, bool beginTransition)
    {
        _currentCameraZone = cameraZone;
        UpdateCameraZoneBound();

        // 카메라 전이 애니메이션을 시작합니다.
        if (beginTransition)
        {
            _transitioning     = true;
            _transitioningTime = 0f;


            //
            _xTransitionEnded = false;
            _yTransitionEnded = false;
        }
    }
Ejemplo n.º 24
0
    public void SetCamZone(CameraZone zone)
    {
        curCamZone = zone;

        /* // centered hotspot
         * min.x = curCamZone.transform.position.x - ((curCamZone.zoneWidth / 2));
         * max.x = curCamZone.transform.position.x + (curCamZone.zoneWidth / 2);
         * min.y = curCamZone.transform.position.y - (curCamZone.zoneHeight / 2);
         * max.y = curCamZone.transform.position.y + (curCamZone.zoneHeight / 2);
         */


        // top left hotspot
        min.x = curCamZone.transform.position.x;
        max.x = curCamZone.transform.position.x + (curCamZone.zoneWidth);
        min.y = curCamZone.transform.position.y - (curCamZone.zoneHeight);
        max.y = curCamZone.transform.position.y;
    }
    /// <summary>
    /// 사용자 정의 속성을 다룹니다.
    /// </summary>
    /// <param name="gameObject">대상 GameObject입니다.</param>
    /// <param name="customProperties">사용자 정의 속성 딕셔너리입니다.</param>
    public override void HandleCustomProperties(GameObject gameObject, IDictionary <string, string> customProperties)
    {
        // 자신이 관리할 객체가 아니라면 종료합니다.
        if (IsValid(customProperties) == false)
        {
            return;
        }

        // 사용할 변수를 선언합니다.
        CameraZone component = gameObject.GetComponent <CameraZone>();

        // 속성을 업데이트합니다.
        component._cameraZoneID = GetIntValue(customProperties, "_cameraZoneID");

        // 체크 포인트 속성을 업데이트합니다.
        bool isCheckpoint    = GetBooleanValue(customProperties, "_Checkpoint");
        int  checkpointIndex = GetIntValue(customProperties, "_CheckpointIndex");

        component._isCheckpoint    = isCheckpoint;
        component._checkpointIndex = checkpointIndex;

        // 바운드 속성을 업데이트합니다.
        component._isTopBounded    = GetBooleanValue(customProperties, "_isTopBounded");
        component._isTopFirst      = GetBooleanValue(customProperties, "_isTopFirst");
        component._isLeftBounded   = GetBooleanValue(customProperties, "_isLeftBounded");
        component._isLeftFirst     = GetBooleanValue(customProperties, "_isLeftFirst");
        component._isRightBounded  = GetBooleanValue(customProperties, "_isRightBounded");
        component._isRightFirst    = GetBooleanValue(customProperties, "_isRightFirst");
        component._isBottomBounded = GetBooleanValue(customProperties, "_isBottomBounded");
        component._isBottomFirst   = GetBooleanValue(customProperties, "_isBottomFirst");

        //
        if (isCheckpoint)
        {
            //
            component.name = "Checkpoint" + checkpointIndex;

            //
            StageManager stageManager = StageManager.Instance;
            stageManager._checkpointCameraZones[checkpointIndex] = gameObject.GetComponent <CameraZone>();
        }
    }
Ejemplo n.º 26
0
    public void CustomizePrefab(GameObject prefab)
    {
        CameraZone    camZone = prefab.AddComponent <CameraZone>();
        BoxCollider2D camColl = prefab.GetComponent <BoxCollider2D>();

        camZone.zoneWidth  = MapData.ROOMWIDTH;
        camZone.zoneHeight = MapData.ROOMHEIGHT;
        camColl.size       = new Vector2(MapData.ROOMWIDTH, MapData.ROOMHEIGHT);
        camColl.offset     = new Vector2(MapData.ROOMWIDTH / 2, -(MapData.ROOMHEIGHT / 2));
        camColl.isTrigger  = true;

        prefab.AddComponent <DoorManager>();
        DoorManager doorManager = prefab.GetComponent <DoorManager>();

        if (doorManager.doors == null)
        {
            doorManager.doors = new List <Door>();
        }

        for (int i = 0; i < prefab.transform.childCount; i++)
        {
            GameObject child = prefab.transform.GetChild(i).gameObject;

            if (child.name.Contains("Door"))
            {
                child.gameObject.SetActive(false);
                doorManager.doors.Add(child.GetComponent <Door>());
            }
            else if (child.name.Contains("Spawners"))
            {
                Vector3 cPos = child.gameObject.transform.position;
                cPos.Set(cPos.x + 0.5f, cPos.y + 0.5f, cPos.z);

                foreach (BoxCollider2D box2d in child.GetComponentsInChildren <BoxCollider2D>())
                {
                    BoxCollider2D.DestroyImmediate(box2d);
                }
            }
        }
    }
Ejemplo n.º 27
0
 public void SetActiveCameraZone(CameraZone currentCamZone)
 {
     activeCamZone = currentCamZone;
 }
Ejemplo n.º 28
0
 /// <summary>
 /// 플레이어가 특정 카메라 존 안에 있는지를 확인합니다.
 /// </summary>
 /// <param name="cameraZone">플레이어가 포함되었는지를 확인할 카메라 존입니다.</param>
 /// <returns>카메라 존 안에 플레이어가 있다면 참입니다.</returns>
 public bool IsInCameraZone(CameraZone cameraZone)
 {
     return(_currentCameraZone.GetInstanceID() == cameraZone.GetInstanceID());
 }
Ejemplo n.º 29
0
 public void removeZone(CameraZone zone)
 {
     insideZones.Remove(zone);
 }
Ejemplo n.º 30
0
 public void InitCamera(CameraCustomType _type, CameraZone _zone)
 {
     type = _type;
     zone = _zone;
 }
Ejemplo n.º 31
0
    private CameraZone zone; //the parent that contains this trigger and the view Camera

    private void Start()
    {
        zone = transform.parent.gameObject.GetComponent <CameraZone>();
        gameObject.GetComponent <SpriteRenderer>().enabled = false;
    }
Ejemplo n.º 32
0
 void GrabMainCameraStats(CameraZone script)
 {
     script.CameraPosition = Camera.main.transform.position;
     script.CameraRotation = Camera.main.transform.rotation.eulerAngles;
 }
Ejemplo n.º 33
0
 public void AssignCameraZone(CameraZone zone)
 {
     Global.instance.AssignCameraZone(zone);
 }
 //Given a CameraZone, takes its playerFocus and followSpeed and returns a CameraZoneSettings object.
 public static CameraZoneSettings extractSettings(CameraZone camZone)
 {
     return(new CameraZoneSettings(camZone.playerFocus, camZone.followSpeed));
 }