공부/인프런 - Rookiss

Part 3-5-3. 카메라 : 카메라가 벽에 막힐시, 벽 앞으로 카메라 이동시키기

셩잇님 2023. 8. 21. 15:58
반응형

 

 

카메라

플레이어를 따라가던 카메라가 벽에 가려지면, 벽 앞으로 카메라 이동시키기

 

📜CameraController.cs

    void LateUpdate()
    {
        if (_mode == Define.CameraMode.QuaterView)
        {
            RaycastHit hit;
            if(Physics.Raycast(_player.transform.position, _delta, out hit, _delta.magnitude, LayerMask.GetMask("Wall")))
            {
                float dist = (hit.point - _player.transform.position).magnitude * 0.8f;
                transform.position = _player.transform.position + _delta.normalized * dist;
            }
            else
            {
                transform.position = _player.transform.position + _delta;
                transform.LookAt(_player.transform);
            }
        }
    }

 

_delta 👉 플레이어와 카레아 사이의 적정 Vector3 차이. 고정된 값.

 

플레이어의 위치로부터 _delta 방향으로 대충 _delta.magnitude 길이의 광선을 쐈을 때 “Wall” 레이어를 가진 오브젝트가 충돌 됐다면 👉 플레이어와 카메라 사이를 가로막는 장애물에 부딪쳤다는 얘기!

 

플레이어 위치로부터 카메라가 장애물을 피해 새롭게 옮길 위치

거리

플레이어로부터 장애물이 있는 곳 까지의 거리에서 대충 0.8 곱한 값. (장애물 앞으로 넘어 가도록)

 

방향

_delta 방향 벡터, 값을 가진 벡터를 더해준 값.

 

 

 

반응형