GameInput의 포스 피드백이 장치 출력을 어떻게 관리하는지 이해합니다. 포스 피드백을 통해 게임 입력 장치는 장치의 하나 이상의 입력 컨트롤을 물리적으로 움직여 사용자에게 촉각적인 피드백을 제공할 수 있습니다. 포스 피드백은 드라이빙 휠, 비행 시뮬레이션 장비 등 차량 조작을 시뮬레이션하는 입력 장치와 함께 작동합니다. 이러한 장치에는 축을 따라 컨트롤러에 힘을 가하는 포스 피드백 모터가 포함되어 있습니다. 레이싱 휠에서는 게임 내 상황을 시뮬레이션하기 위해 휠을 회전시키는 회전력이 됩니다. 비행 스틱과 함께 포스 피드백을 사용하면 특정 위치에서 레버를 밀거나 당기기 어렵게 만들 수 있습니다.
포스 피드백을 지원하는 GameInput 인터페이스에 대한 자세한 내용은 IGameInputDevice 및 IGameInputForceFeedbackEffect를 참조하세요.
포스 피드백 모터 확인
포스 피드백 효과를 만들려면, 효과를 적용할 입력 장치를 나타내는 IGameInputDevice 인터페이스가 필요합니다.IGameInputDevice 인터페이스를 얻은 후, GameInputDeviceInfo 구조체를 검사하여 장치의 포스 피드백 모터 개수를 확인합니다. 이는 IGameInputDevice::GetDeviceInfo를 호출하여 수행할 수 있습니다. 입력 장치에 포스 피드백 모터가 있으면 GameInputDeviceInfo 멤버 ForceFeedbackMotorCount의 값이 1 이상입니다.
포스 피드백 효과 만들기
장치의 GameInputDeviceInfo 구조체가 하나 이상의 포스 피드백 모터를 가지고 있음을 나타내면, 다음 코드와 같이 IGameInputDevice::CreateForceFeedbackEffect를 호출하여 장치에 대한 포스 피드백 효과를 만듭니다.GameInputForceFeedbackParams 구조체를 초기화합니다.
예를 들어, 스프링 동작으로 피드백 효과를 만들려면 GameInputForceFeedbackParams는 GameInputForceFeedbackEffectKind 값 GameInputForceFeedbackSpring과 스프링용 GameInputForceFeedbackConditionParams 구조체로 구성됩니다. 선택한 GameInputForceFeedbackEffectKind 열거형에 대한 매개 변수를 채웁니다.
인덱스로 포스 피드백 모터 효과를 선택하고 GameInputForceFeedbackParams 구조체를 만든 후, IGameInputDevice::CreateForceFeedbackEffect를 호출하여 효과를 만듭니다. 이 효과는 IGameInputForceFeedbackEffect 인터페이스로 표현됩니다.
포스 피드백 효과의 수명은 생성된 IGameInputForceFeedbackEffect 인터페이스와 연관됩니다. 효과가 생성되면 장치에 로드됩니다. 마지막 참조가 해제되면 포스 피드백 효과가 중지되고 장치 모터에서 언로드됩니다.
포스 피드백 효과 적용 및 업데이트
포스 피드백 효과가 생성되면 장치 모터에 직접 로드됩니다. 포스 피드백 모터는 한정된 메모리 용량을 가지고 있습니다. 이로 인해 동시에 로드되어 재생되는 포스 피드백 효과의 수가 제한됩니다. 이 한도에 도달한 후 IGameInputDevice::CreateForceFeedbackEffect를 호출하면 함수가 오류를 반환합니다. 포스 피드백 효과가 생성되면 정지 상태로 포스 피드백 모터에 로드됩니다. 로드된 후에는 IGameInputForceFeedbackEffect 인터페이스를 사용하여 효과의 상태를 설정해서Running으로 만듭니다. 그러면 장치 모터에서 효과가 재생됩니다.
포스 피드백 효과의 상태
포스 피드백 효과는 게임의 현재 상태에 맞게 여러 상태를 거칩니다. 예상 동작을 유지하려면 게임에 따라 효과의 상태를 업데이트하고 파악하는 것이 중요합니다. 포스 피드백의 상태는 다음 코드와 같이 GameInputFeedbackEffectState에 따라 설정할 수 있습니다.Stopped 상태로 변경됩니다. 새 피드백 효과나 중지된 피드백 효과를 Running 상태로 설정하면 효과가 처음부터 재생됩니다. 상태를 Paused로 설정하면 포스 피드백 효과가 모터에 영향을 주는 것을 중지합니다. 그러나 Paused 상태의 효과를 Running으로 설정하면 포스 피드백 효과가 중단된 지점부터 효과 패턴을 적용합니다.
효과를 중지하면 효과가 끝나지만 나중에 다시 트리거할 수 있습니다. 예를 들어 사용자가 레이싱 게임에서 험로를 벗어나는 경우입니다. 마찬가지로, 효과를 일시 중지하는 것은 게임 플레이는 변함없지만 사용자가 UI를 탐색하려는 상황(예: 일시 중지 메뉴)에 유용합니다.
포스 피드백 효과의 상태는 IGameInputForceFeedbackEffect::SetState를 호출하여 설정합니다.
포스 피드백 효과 업데이트
포스 피드백 효과의 게인을 조정하거나, 새 GameInputForceFeedbackParams 구조체가 동일한 GameInputForceFeedbackEffectKind 열거형을 공유하는 경우 새 매개 변수 세트를 제공합니다.게인
다음 코드와 같이 IGameInputForceFeedbackEffect::SetGain 함수로 게인을 조정하여 포스 피드백 효과의 강도를 변경합니다.새 매개 변수 설정
다음 코드와 같이 IGameInputForceFeedbackEffect::SetParams 함수를 사용하여 포스 피드백 효과에 대한 새 매개 변수를 제공합니다.GameInputForceFeedbackConstant의 GameInputForceFeedbackEffectKind 열거형을 가진 피드백 효과의 매개 변수를 설정해 매개 변수를 변경함으로써 다양한 피드백 패턴을 시뮬레이션할 수 있습니다.
