게임패드 액션 설명서
이 문서는 GameMaker에서 게임패드의 아날로그 및 디지털 컨트롤을 감지하는 전용 액션들에 대해 설명합니다. 이 액션들을 사용하려면 게임패드 인덱스 값을 지정해야 하는데, 여기서 인덱스 값은 0부터 시작하는 숫자로 선택된 게임패드를 나타냅니다. 게임패드가 장치에 연결되거나 제거될 때 비동기 시스템 이벤트가 발생합니다. 이를 처리하려면 추가적인 코드가 필요할 수 있습니다.
게임패드 슬롯
- 슬롯 0 - 3: Xinput 게임패드 (Xbox360 컨트롤러 및 호환 장치 전용)
- 슬롯 4 - 11: DirectInput 게임패드 (다양한 다른 모델 감지 가능)
입력 상수
게임패드 액션을 사용할 때 입력은 축(axes), 버튼(buttons), 또는 해트(hats)에서 올 수 있습니다. GameMaker는 이 입력을 다음과 같은 내장 상수로 할당합니다. 해트는 비표준 컨트롤러에서만 감지되는 경우가 많습니다.
게임패드 액션 목록
가용한 게임패드 액션은 다음과 같습니다:
| 액션 | 설명 |
|---|---|
| Get Gamepad Axis | 게임패드의 축 값 가져오기 |
| Get Gamepad Trigger | 게임패드의 트리거 값 가져오기 |
| Get Gamepad Count | 연결된 게임패드 수 가져오기 |
| Get Gamepad Connected | 게임패드 연결 상태 확인하기 |
| Set Gamepad Axis Deadzone | 축의 데드존 설정 |
| Set Gamepad Button Threshold | 버튼 임계값 설정 |
| If Gamepad Button Pressed | 버튼이 눌렸는지 확인 |
| If Gamepad Button Down | 버튼이 눌리고 있는지 확인 |
| If Gamepad Button Released | 버튼이 떼어졌는지 확인 |
플랫폼 호환성
| 플랫폼 | 최대 연결 장치 수 | 주의 사항 |
|---|---|---|
| Windows | 11개 | 처음 4개의 슬롯은 XInput dll로 처리되며 Xbox 컨트롤러에 최적화되어 있습니다. |
| macOS | 4개 | PlayStation 3 및 Xbox 360 타입만 지원합니다. "Mac AppStore 빌드" 옵션은 꺼야 합니다. |
| Ubuntu | 여러 개 | 추가 라이브러리 설치가 필요합니다 (예: jstest-gtk, joystick). |
| HTML5 | 여러 개 | 대부분의 주요 브라우저에서 지원되며, Safari를 제외합니다. |
| iOS | iCade 지원 | 기본적인 버튼 매핑이 적용됩니다. |
| Android | 여러 개 | 사용하기 위해 API 레벨 12가 필요하며, Bluetooth 장치가 연결된 경우 인식됩니다. |
| PS4 | - | 터치패드 추적을 위해 device_mouse_* 버튼 사용 필요(문서화된 GML 비주얼 액션 없음). |
활용 및 응용 예제
게임패드 입력 감지 예제
다음은 게임패드 축을 감지하는 간단한 GML 코드 예제입니다:
if (gamepad_is_connected(0)) {
var axis_x = gamepad_axis_value(0, gp_axislh); // 왼쪽 축 X
var axis_y = gamepad_axis_value(0, gp_axislv); // 왼쪽 축 Y
// 왼쪽 축의 값 출력
show_debug_message("Left Stick X: " + string(axis_x));
show_debug_message("Left Stick Y: " + string(axis_y));
}
버튼 입력 예제
버튼 입력을 확인하는 예제입니다:
if (gamepad_is_connected(0)) {
if (gamepad_button_check(0, gp_face1)) {
show_debug_message("A 버튼이 눌렸습니다.");
}
}
이 문서는 게임패드 액션의 기본 개념과 여러 플랫폼에서의 호환성에 대해 알아보았습니다. 이러한 기능을 활용하여 각종 게임에서 유용하게 적용할 수 있습니다!