CREATE YOUR WORLD
Players & Characters : Advance...

Camera Collision Layer

7min

개요

ZepetoCamera는 ZepetoPlayers를 통해 생성되며, 카메라 충돌 설정을 통해 카메라와 게임 객체 간의 물리적 충돌을 제어할 수 있습니다.

카메라 충돌은 카메라가 장면의 객체와 충돌할 때 발생합니다.

카메라 충돌이 설정되면, 카메라가 객체와 충돌할 때 그 객체 앞에서 움직일 수 없게 되어 카메라가 객체를 통과하는 대신 그 앞에 머무르게 됩니다.

다음 두 가지 예를 살펴보겠습니다.

  • 왼쪽 화면에서는 카메라 충돌이 설정되지 않아 카메라가 캐릭터 주변의 객체나 바닥에 영향을 받지 않고 자유롭게 움직일 수 있습니다.
  • 오른쪽에서는 카메라 충돌이 활성화되어 있어 카메라가 이동할 때 벽과 바닥을 관통할 수 없습니다.

카메라 충돌을 활성화하면 카메라의 움직임이 물리적으로 영향을 받게 되어, 플레이어가 볼 수 없는 위치는 카메라에 의해 조명될 수 없으며, 이는 보다 현실적인 묘사를 가능하게 합니다.

Document image




ZepetoPlayers 카메라 충돌 설정

1) 카메라가 각 레이어에서 감지하는 충돌을 설정할 수 있습니다.

  • 사용자 레이어를 설정하거나 추가하려면, 검사기 창의 레이어 드롭다운 메뉴를 눌러 '레이어 추가'를 선택하세요.
  • 사용자가 추가할 수 있는 레이어는 Layer3 및 Layer6 이상으로 번호가 매겨질 수 있습니다. Layer0 ~ 2 및 Layer6 ~ 7은 Unity의 기본 레이어입니다.
Document image




2) 카메라가 충돌 판단을 적용할 객체를 선택한 다음, 설정한 레이어를 선택하세요.

Document image




3) 이제 ZepetoPlayers의 카메라 부분에서 충돌로 등록할 레이어를 선택하려면 충돌 드롭다운 버튼을 눌러주세요. 추가한 레이어를 확인하세요.

Document image




4) 이제 재생 버튼을 눌러 런타임을 실행하면 Zepeto 카메라가 바닥과 벽을 통과하지 않고 이동하는 것을 볼 수 있습니다.

Document image




런타임에서 스크립트로 설정하기

  1. 런타임에서 카메라 충돌을 동적으로 지정할 수 있습니다.
  2. 아래는 런타임에서 공용 변수로 등록된 collisionLayer 번호를 레이어 마스크로 설정하는 스크립트입니다.
  • 핵심은 ZepetoPlayers.instance.cameraData.layer에서 선택할 레이어 마스크를 지정하는 것입니다.
CameraCollisionManager


3. 스크립트 설명

  • 레이어를 스크립트하고 카메라에 적용하기 위해서는 LayerMask를 사용해야 합니다.
  • LayerMask는 비트 연산을 통해 입력된 값을 가집니다.
    • LayerMask는 정수 값으로 표현되며, 각 비트는 해당 레이어가 포함되어 있는지를 나타냅니다.
    • 예를 들어, LayerMask의 값이 5(이진수로 00000101)라면, 레이어 0과 레이어 2가 포함되어 있다고 말할 수 있습니다.
  • layerMaskValue |=: 이 비트 연산은 기존의 layerMaskValue와 새로 계산된 값을 OR 연산으로 결합합니다.
    • 기존의 layerMaskValue가 이진수로 00000001이고, 새로 계산된 값이 00000100이라면, 두 값을 OR 연산하면 이진수로 00000101이 됩니다.
    • 이것은 레이어 0과 레이어 2가 LayerMask에 포함되도록 보장합니다.
  • EnhancedCamera의 경우, 플레이어 레이어가 카메라의 충돌 레이어로 설정되지 않아 카메라가 캐릭터와 교차하지 않도록 합니다.



업데이트됨 11 Oct 2024
Doc contributor
이 페이지가 도움이 되었습니까?