Unity - Camera

이승덱·2021년 12월 27일
0

UnityEngine

목록 보기
9/11

Unity - Camera

  • 대부분의 게임은 카메라가 플레이어를 따라다니거나 플레이어의 조작에 의해 카메라가 이동한다.
  • 카메라가 이동하기 위해서는 플레이어를 이동시키기 위해 Controller 스크립트를 추가한것과 같이 카메라도 카메라를 위한 Controller 스크립트가 추가되어야 한다.
  • 우리가 기획한 카메라의 움직임을 스크립트를 통해 구현한다.
  • Update문을 사용하여 카메라를 이동시킬 경우 각 Controller의 Update문 시행 시점에 따라 플레이어의 이동과 카메라의 이동이 랜덤한 시점으로 움직이기 때문에 덜덜 떨리는 듯한 현상이 일어난다. 따라서 Update문이 아닌 LateUpdate를 통해 Update문보다 늦게 시행되도록 구현한다.
  • 만약 카메라와 플레이어 사이에 벽이 있을 경우 플레이어와 벽 사이의 거리보다 조금 가깝게 카메라를 배치하여 플레이어가 카메라에 보이도록 구현한다.
    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);
            }
        }
    }
profile
공부 기록용 블로그입니다

0개의 댓글