This document is about: QUANTUM 2
SWITCH TO

개요

LookSystem은 엔티티의 Transform3D 회전을 제어하고 엔티티 모양 방향에 대한 정보를 저장할 수 있는 방법을 제공합니다. 이러한 규칙은 바디 회전에 적용되는 규칙과 다를 수 있습니다. LookSystemLook 컴포넌트는 두 가지 핵심 문제를 해결하는 것을 목표로 합니다.

  1. 휴머노이드 엔티티의 경우, 몸의 회전은 보통 Y축 회전만을 허용하도록 잠겨 있습니다.
  2. 뷰(유니티) 및 시뮬레이션(Quantum)에서 권위 있는 모양 방향 동작을 활성화하고 조정하기 위한 버전 지정입니다.

컴포넌트

Look 컴포넌트를 사용하면 에이전트의 시야 방향을 바디과 독립적으로 처리할 수 있습니다. 이렇게 하면 Look 컴포넌트에 있는 속성에서 볼 수 있듯이 Transform3D에 설정된 제약 조건을 재정의할 수 있습니다:

  • Look Offset: 엔티티 피벗(피트)에서 머리/눈 중앙의 상대적인 오프셋으로, 이 속성은 특정 Transform3DEntityComponentLook에 연결할 때 유니티에서 베이크됩니다.
  • Version: 오버라이드를 동기화하고 실수로 덮어쓰지 않도록 하기 위해 사용됩니다.
  • Ignore Input: 설정되면, 컴포넌트는 LookDesires를 완전히 무시합니다
  • Freeze X: 설정되면, 엔티티 Transform3D 회전 X 축이 특정값으로 잠겨지게되고 오버라이드 될수 있습니다.
  • Freeze Y: 설정되면, 엔티티 Transform3D 회전 Y 축이 특정값으로 잠겨지게되고 오버라이드 될수 있습니다.
  • Freeze Z: 설정되면, 엔티티 Transform3D 회전 Z 축이 특정값으로 잠겨지게되고 오버라이드 될수 있습니다.
  • Look Position: 월드 공간 모양 위치
  • Look Rotation: 구속되지 않는 모양 회전
  • Freeze Euler Rotation: 잠긴 축을 중심으로 하는 엔티티 Transform3D회전을 덮어쓰는 데 사용됩니다.

룩 방향 동시성

빠른 속도의 1인칭 뷰 게임에서는 즉각적이고 인터폴레이션되지 않은 입력 응답을 갖는 것이 중요합니다. 이를 위해 클라이언트는 렌더링 속도로 유니티에서 로컬 플레이어의 공식 회전을 업데이트하고 시뮬레이션에 의해 입력이 폴링 될 때 절대 회전을 전송해야 합니다. 하지만 시뮬레이션을 통해 플레이어 회전을 강제로 무효로 만드는 것도 중요합니다. 뷰와 시뮬레이션 사이의 동시성 문제를 해결하기 위해 Look 컴포넌트에는 Version 속성이 장착되어 있습니다.

따라서 FPS 템플릿은 다음과 같이 모양 방향을 처리합니다.

  1. 유니티에서의 로컬 회전은 항상 렌더링 속도로 업데이트되며 Quantum 시뮬레이션과는 무관합니다.
  2. 로컬 플레이어가 제어하는 엔티티는 항상 로컬에 저장된 로테이션에서 회전 값을 읽습니다. 따라서 보간 없이 부드러운 회전이 가능합니다.
  3. Quantum 시뮬레이션에서 게임 규칙에 따라 회전을 강제로 설정해야 할 경우(예: 특정 방향으로 스폰) Look 컴포넌트의 Version을 증가시켜야 하며, 그렇지 않을 경우 다음 입력을 폴링 할 때 유니티에서 캐시 된 값으로 회전을 덮어쓸 수 있습니다. 이 시나리오는 렌더링 속도가 시뮬레이션 속도보다 느릴 때 발생할 가능성이 높으며, 이는 유니티 프레임 간에 여러 예측된 Quantum 프레임이 시뮬레이션되었음을 의미합니다.
  4. 버전이 무효화되면 다음 유니티 프레임 시작 시 클라이언트가 탐지합니다. 이 경우 클라이언트는 캐시 된 값을 시뮬레이션에서 제공하는 값(Version 값 포함)으로 재설정합니다. 다음번에 입력이 폴링 되면 클라이언트는 올바른 Version을 사용하여 새 입력 회전을 제공합니다.

이 실행 흐름은 다음 그림으로 표현됩니다.

look
Look.
Back to top