ControllerManager 인스턴스는 할당된 RootPart 에 대한 시뮬레이션된 모션 컨트롤을 관리합니다.함께 사용하면 ControllerPartSensors , 물리 기반 캐릭터 컨트롤러를 빌드할 수 있습니다.
핵심 설정
ControllerManager는 루트로 사용할 BasePart를 요구합니다. 이동 힘과 부품 감지가 이 부분에 있을 것입니다.
부품을 다른 구성 요소와 함께 조직을 위한 Model 인스턴스로 그룹화합니다.
모델에 ControllerManager 인스턴스를 추가합니다. 컨트롤러 관리자 가 개체 삽입 메뉴에 처음 나타나지 않으면 메뉴의 삽입 설정 에서 추천 개체만 표시를 "표시 안 함"으로 해제합니다.
센서 설정
A 는 바닥과 사다리를 감지하는 데 사용하는 동일한 코드를 가진 부품을 감지합니다.
자식으로 ControllerPartSensor의 자식으로 GroundSensor 를 삽입하고 목적을 식별하기 위해 이름을 GroundSensor 로 변경합니다.그런 다음, 속성 창에서 해당 SearchDistance 속성을 2 로 설정하고 해당 SensorMode 을 바닥 으로 유지합니다.
다른 ControllerPartSensor 를 루트 파트 의 자식으로 삽입하고 이름을 클라이밍 센서 로 변경합니다.그런 다음, 속성 창에서 해당 SearchDistance 속성을 1 및 SensorMode 을 사다리 로 설정합니다.
컨트롤러 설정
컨트롤러 인스턴스인 GroundController 및 ClimbController 는 관리되는 부분에 세계와 상호작용하는 방법을 알려주고, 센서 설정 동안 구성한 센서와 함께 작동합니다.
삽입 하나의 자식으로 GroundController 와 ClimbController 을 모두 삽입하십시오.Children of the ControllerManager .
새로운 GroundController 인스턴스를 선택한 다음, 속성 창에서 관리되는 부품이 대지 위에 "떠오르도록" 설정할 GroundOffset을 값으로 설정합니다.이 값이 보다 작은 것이 중요하며, 의 값보다 작기 때문에 그 센서는 대지의 감각을 잃고 부품에서 그 힘을 효과적으로 중지하면 비활성화됩니다.
링크 참조
코어 설정을 완료하려면 ControllerManager 인스턴스의 다양한 속성을 Model 메인 내의 개체에 연결해야 합니다.
ControllerManager 인스턴스를 선택합니다.
속성 창에서 다음 속성 각각을 클릭한 다음, 탐색기 창에서 해당 인스턴스를 클릭하여 연결완료합니다.
- ActiveController 속성을 GroundController 인스턴스에 연결하십시오.
- RootPart 속성을 RootPart 라는 부품에 연결하십시오.
- ClimbSensor 속성을 등반 센서 인스턴스에 연결하십시오.
- GroundSensor 속성을 지상 센서 인스턴스에 연결합니다.
테스트
센서 와 컨트롤러 가 플레이스있고, 연결된 참조가 있으면 Studio에서 컨트롤러를 테스트할 수 있습니다.
이 시나리오에 아바타 캐릭터를 삽입할 필요가 없으므로 실행 모드를 사용하여 플레이테스트를 시작합니다(F8).
루트 파트 는 추가 컨트롤러 설정에서 설정한 값인 에서 대지 위로 부상해야 합니다.또한 ControllerManager.FacingDirection 벡터와 일치하도록 회전해야 합니다.
런타임 동안 및 벡터를 변경하여 다양한 이동 방향과 방향을 실험하십시오.또한 GroundController , AccelerationTime , DecelerationTime 및 GroundOffset 과 같은 인스턴스의 다른 속성을 실험하세요.
컨트롤러 관리자 지상 컨트롤러
사용자 지정 센서
ControllerPartSensor.SensorMode 옵션의 Floor 및 Ladder 실행은 정확한 Humanoid 센서 코드를 실행하여 이를 역호환에 사용할 수 있도록 합니다.그러나 보행 및 등반 가능한 부품이 감지되는 방법과 시기를 사용자 지정할 수도 있으며, 결국 관리되는 부품이 걷거나 등반할 때 변경됩니다.
스위치 ControllerPartSensor.UpdateType 에서 읽기 에서 수동 으로.
- OnRead 트리거는 읽을 때마다 해당 출력 속성을 업데이트하도록 합니다.즉, 이러한 속성에 쓰는 모든 것이 내부 감지 행동에 의해 덮어쓰기되는 "읽기 전용" 모드로 센서를 배치합니다.
- 매뉴얼 은 내부 감지 행동을 끕니다.출력 속성은 원하는 대로 작성할 수 있으며 SensorMode 는 아무것도 하지 않습니다.
자체 감지 논리를 수행하고 출력을 센서 출력 속성에 기록하는 스크립트를 만듭니다.일반적으로 공간 쿼리(예: WorldRoot:Raycast() 또는 WorldRoot:Blockcast() )를 사용하여 반환되는 RaycastResult 을 사용합니다.그런 다음 스크립트는 결과 속성을 가져와서 센서 상응에 설정할 수 있습니다:
쿼리가 실행되고 센서 인스턴스를 업데이트하는 빈도를 관리해야 한다는 점에 유의하십시오.
ControllerManager 는 할당된 센서를 계속 사용하여 전달하는 데이터를 가져갈 것입니다.