게임패드 축 데드존 설정
gamepad_set_axis_deadzone
함수는 조이스틱 축의 "데드존"을 설정하는 데 사용됩니다. 이 함수는 특정 장치 슬롯을 지정하고, 0에서 1 사이의 값을 설정합니다. 입력 값이 지정된 값보다 낮으면 조이스틱 축은 0으로 간주됩니다. 이 설정은 지정된 장치 슬롯에 연결된 모든 조이스틱의 모든 축에 영향을 미치는 전역 설정입니다.
이 함수를 사용한다고 해서 축 값이 데드존 값에서 시작되는 것은 아닙니다. gamepad_axis_value()
함수는 항상 -1과 0 또는 0과 1 사이의 정규화된 값을 반환합니다. 예를 들어, 데드존을 0.2로 설정하면 스틱을 오른쪽으로 밀었을 때 원시 축 값이 0.2를 초과해야만 0에서 1 사이의 값을 반환합니다. 원시 값이 0.2일 때 반환 값은 0, 원시 값이 0.5일 때 반환 값은 0.375, 원시 값이 0.9일 때 반환 값은 0.875가 됩니다.
문법
gamepad_set_axis_deadzone(device, deadzone);
인자 설명
인자 | 타입 | 설명 |
---|---|---|
device | Real | 체크할 게임패드 장치 "슬롯" |
deadzone | Real | 0에서 1 사이의 데드존 값 |
반환값
N/A
예제
if (async_load[? "event_type"] == "gamepad discovered") {
var _pad = async_load[? "pad_index"];
gamepad_set_axis_deadzone(_pad, 0.2);
array_push(gamepads, _pad);
}
위 코드는 AsyncSystem 이벤트에서 실행되며, 게임패드가 발견되면 패드 인덱스를 가져와 데드존을 20%로 설정하고 패드 인덱스를 배열에 추가합니다. 이는 Movement And Controls
의 게임패드 이동 예제를 따릅니다.
활용 예제
- 데드존 설정 후 게임패드 입력 처리
gml var axis_x = gamepad_axis_value(_pad, gp_axis_x); var axis_y = gamepad_axis_value(_pad, gp_axis_y);
- 데드존을 동적으로 변경하기
gml if (some_condition) { gamepad_set_axis_deadzone(_pad, 0.1); } else { gamepad_set_axis_deadzone(_pad, 0.3); }
- 게임패드 연결 시 자동 데드존 설정
gml if (gamepad_is_connected(_pad)) { gamepad_set_axis_deadzone(_pad, 0.15); }
- 다양한 게임패드에 대해 다른 데드존 설정
gml if (_pad_type == "racing") { gamepad_set_axis_deadzone(_pad, 0.05); } else { gamepad_set_axis_deadzone(_pad, 0.2); }
이러한 예제들은 게임패드의 데드존을 설정하고 활용하는 다양한 방법을 보여줍니다.