▣ 안녕하세요. 이번장에서는 카메라 셰이크(흔들기) 효과에 대해 공부하도록 하겠습니다.
▣ 우선 3D프로젝트를 생성해 주시고, 기본 플레이어와 땅을 배치해 주세요.
그리고 카메라 위치를 플레이어 캡슐이 중앙에 보이게 위치를 변경해주세요.
그런 다음 플레이어에 스크립트 한 개를 생성해서 넣어주세요.
▣ 스크립트를 열어서 cam, cameraOriginalPos 변수를 선언해주세요.
cam에는 메인카메라메인 카메라 클래스를 cameraOriginalPos에는 메인 카메라에 위치를 넣어주세요.
▣ 그런다음 업데이트 함수에서 Debug.Log(Random.insideUnitSphere)이라는 클래스에 있는 기능을 출력해보려고 합니다.
https://docs.unity3d.com/kr/530/ScriptReference/Random-insideUnitSphere.html
▣ 이 기능은 유니티 매뉴얼에서 확인하면 반경 1을 갖는 구 안의 임의의 지점을 반환하는 함수라고 나와있습니다.
다시 말해 -1 ~ 0 ~ 1사이에 랜덤에 숫자를 Vector3 구의 형식으로 랜덤으로 반환해 주는 함수라고 생각하시면 됩니다.
저장을 하고
▣ 콘솔창에서 확인을 하면 이렇게 구의 반경으로 랜덤으로 벡터 값을 출력하는 걸 확인할 수 있습니다.
이제 이걸 이용해서 카메라를 랜덤으로 움직이게 하면 됩니다.
▣ IEnumator CameraShake()라는 코루틴을 생성해주세요.
IEnumator CameraShake() 매개변수안에는 deuration == 유지시간, magnitude == 흔들리는 카메라 범위 크기를 의미합니다. 우리가 원하는 시간 그리고 원하는 범위까지 카메라를 흔들기 위함입니다.
▣ float timer 변수는 시작 시간이고
while()안에서 우리가 지정해 준 매개변수 유지시간까지 반복을 하기 위해 코드를 작성했습니다.
그리고 cam.transform.localPosition = Random.insideUnitSphere * magnitude + cameraOriginalPos;
반경 1을 갖는 구의 랜덤 벡터 값 * 흔들리는 카메라 범위 + 카메라 원래 위치
을 이렇게 진행하게 되면 우리가 원하는 범위만큼 카메라를 흔들게 됩니다.
▣ cam.transform.localPosition = cameraOriginalPos 는 카메라가 흔들리고 다시 카메라를 원위치
원래 상태로 두기 위함입니다.
▣ 마지막으로 업데이트에서 마우스를 클릭하면 StartCoroutine()을 호출합니다.
매개변수값은 원하는 값으로 지정해 주세요.
▣ 저장을 하고 실행을 하면 마우스를 클릭했을 때 카메라가 흔들리는 걸 확인할 수 있습니다.
'[ CODING STUDY ] > 》유니티 실습' 카테고리의 다른 글
유니티 - [오브젝트 이동 여러 예시] (0) | 2022.08.19 |
---|---|
유니티 - [함수호출 순서] (0) | 2022.08.18 |
유니티 - [마우스커서 숨기기, 마우스커서 고정] (2) | 2022.04.23 |
유니티 - [회전과 방향 전환] (0) | 2022.04.20 |
유니티 - [rotation, LookRotation, Quaternion, Slerp] (2) | 2022.04.07 |
댓글