This document is about: FUSION 1
SWITCH TO

수정중인 페이지 입니다.

개요

Level 4

개요

KCC(Kinematic Character Controller)는 강체 없이 제약 조건(예: 충돌)에 따라 캐릭터를 이동할 수 있습니다. KCC는 물리 힘의 영향을 받지 않지만 충돌에 의해 제약을 받는 동안 움직임을 수행할 것입니다.

Fusion 용 고급 KCC 애드온은 게임 유형에 한정되지 않은 일반적이고 비교적 낮은 수준의 캐릭터 컨트롤러 솔루션입니다. 이것은 가능한 마찰이나 블롯을 최소화하면서 모든 Fusion 프로젝트와 완벽하게 통합하기 위한 것입니다.

방법

KCC 사용을 위해서는 다음 단계를 따릅니다:

  1. Prefabs/KCC.prefab의 프리팹 변수를 생성하거나 새로운 객체를 생성하고 KCC 컴포넌트를 추가합니다
  2. 원하는 설정을 설정합니다 (반지름, 높이, ...)
  3. 설정/프로세서에서 KCC 프로세서를 연결합니다(기본 그라운드/에어 프로세서는 Prefabs 폴더에서 사용할 수 있습니다).
  4. 입력 속성을 설정하기 위해서 KCC public API를 사용합니다

KCC와 상호작용을 제공하는 모든 객체는 NetworkObject 컴포넌트가 있어야 합니다.

주의: KCC를 상세히 살펴보기전에 KCC 샘플 프로젝트(별도 패키지)를 확인하시기 바랍니다. 이 프로젝트는 코드와 테스트 놀이터를 완벽하게 문서화하였습니다.

다운로드

버전 릴리즈 일자 다운로드
1.1.13 Jan 24, 2024 Fusion KCC 1.1.13 Build 400

특징 요약

  • 위치 및 보기 회전(피치 + 요)에 대한 전체 제어.
  • 캡슐 콜라이더에 대한 물리학 쿼리 및 침투.
  • 네트워크 프록시에 대한 보간 렌더링, 입력 또는 상태 권한이 있는 객체에 대한 전체 시뮬레이션으로 외삽 렌더링.
  • 결합된 동적(물리적) 및 운동학적(비현실적인) 속도 기반 움직임.
  • 구속되지 않은 외부 힘 지원 - 가속도, 속도, 힘, 충격.
  • 키네마틱 가속 및 마찰 모델을 구성할 수 있는 지상 및 공중의 기본 구현(둘 다 고급 예시로 취급할 수 있음).
  • "stages" 및 "processors"가 있는 파이프라인. 각 단계에서 KCC 프로세서는 서로 다른 특성(탄젠트, 속도, 속도 등)을 계산하여 다음 단계/물리 쿼리/후 계산에서 사용합니다.
  • 프로세서는 프리팹(공유 가능, 상태 비저장) 또는 씬 개체(네트워크 속성으로 상태 저장 가능)로 직접 사용할 수 있습니다.
  • 수동 등록("KCC Modifier") 및 충돌 기반("KCC Collision")의 두 가지 유형의 상호 작용에 대한 내장된 지원. 상호 작용은 이동 계산 파이프라인에 프로세서를 주입하는 기본 방법입니다.
  • 프로세서 우선순위(실행 순서) 및 억제 지원 - 프로세서 체인의 속성에 대한 절대적, 추가적, 곱셈 또는 하이브리드 계산 허용
  • 네트워크 속성(반경, 높이, 질량 등)을 동기화하기 위한 기본 설정, 기타 속성 동기화(선택 사항)
  • 사용자 지정 충돌기 필터링 콜백, 하위 충돌기 무시
  • 사용자 지정 충돌기 무시 목록(네트워크화)
  • 연속 충돌 감지입니다.
  • 충돌 권한 콜백 진입/종료 콜백
  • KCC 충돌 기용 별도 게임 오브젝트 - 런타임에 생성된 자식 오브젝트
  • 지형 충돌기를 지원
  • 접지 스냅 및 계단 높이 지원
  • 업데이트 방법의 자동/수동 실행, 네트워크화되지 않은 로컬 KCC 지원
  • 확장 가능한 데이터 구조체
  • 풀링 호환
  • 네트워크 및 성능 최적화
  • 플랫폼에 구애받지 않고 모바일 친화적
  • 테스트 놀이터(별도 패키지)에 대한 전체 설명 예제
  • 프레임별로 디버그에 대한 기본 지원 - 에디터 드로잉 및 로깅

외삽 이동의 주요 장단점

장점:

  • 입력에 즉시 응답
  • 시각적으로 네트워크 상태에 거의 변화 없음

단점:

  • 렌더 프레임에서 시뮬레이션을 위한 추가 CPU 압력
  • 렌더 업데이트의 델타 시간 기반 누적은 가변 델타 시간으로 인해 고정 업데이트와 일치하지 않을 수 있음
  • 외삽 오류 수정 필요

애드온 업데이트

새로운 KCC 패키지를 임포트 하기 전에 KCC 루트 폴더(Assets > Photon > FusionAddons > KCC)를 삭제하는 것이 좋습니다. 대부분의 경우 KCC는 새로운 버전의 Fusion SDK와 상위 호환됩니다.

최신 Fusion SDK로 업데이트할 때 문제가 발생하는 경우(컴파일 오류, 동작 깨짐 등) 가장 가까운 Photonian에 문의하십시오.

확장

KCC 및 데이터 구조체는 부분적인 구현을 통해 확장에 대비하고 있습니다.
따라서 파일을 건드리지 않고도 사용자 지정 기능을 작성하고 퍼블릭 API를 확장하여 프라이빗 데이터에 접근할 수 있습니다.
또한 업데이트 프로세스를 훨씬 쉽고 충돌 없이 만들 수 있습니다.

부분 구현은 다음 클래스에서 사용할 수 있습니다:

  • KCC - API 확장, 네트워크 된 속성 설정은 InitializeUserNetworkProperties()를 통해서
  • KCCData - 프로세서에서 사용할 사용자 지정 롤백 가능 속성을 추가(일반적으로 이동 업데이트).
  • KCCSettings - 사용자 지정 설정 추가
  • KCCInteraction - 모든 상호 작용에서 데이터를 추가로 필터링하거나 추출하기 위해 사용자 정의 게터 추가
  • KCCCollision - 추가 필터링 또는 충돌에서 데이터 추출을 위해 사용자 정의 게터 추가.
  • KCCModifier - 추가 필터링을 위해 사용자 지정 게터를 추가하거나 한정자에서 데이터를 추출
  • 모든 KCC확장과 유틸리티 클래스

확장 예제에 대한 상세 사항에 대해서는, KCC 샘플 프로젝트를 참고하세요 (별도 패키지).

동적 vs. 운동학적 속도

동적 속도는 물리학과 유사한 동작을 모방하도록 설계되었으며 주로 힘에 의해 구동됩니다. KCC는 그것을 계산하기 위한 1단계를 제공합니다.
반면에 운동학적 속도는 다른 모든 운동 속도를 포함하도록 설계되었으며 비현실적인 움직임을 혼합하기 위해 더 많은 단계(4)를 제공합니다.

결과적으로 원하는 속도는 동적 속도와 운동학적 속도의 합입니다.

알려진 문제점

  • 여러 개의 충돌기(특히 오목한 메시 콜라이더)와 충돌할 때 디파이네이션 알고리즘이 실패하여 작은 지터가 발생하기도 합니다.
  • 스텝 감지는 현재 레이 캐스트를 기반으로 하고 있어 충분한 품질을 제공하지 못합니다. 이것은 모양이 겹쳐서 수정될 것입니다.
Back to top