게임패드 입력

GameMaker는 여러 개의 연결된 게임패드에서 아날로그 및 디지털 컨트롤을 감지할 수 있는 전용 함수들을 제공합니다. 이 함수들은 Device Inputs와 유사하게 작동하며, 최대 4개의 XInput 게임패드(및 최대 8개의 DirectInput 게임패드)를 감지하고 각 입력을 처리할 수 있습니다.

게임패드가 장치에 연결되거나 제거될 때 비동기 시스템 이벤트가 발생하며, 이를 적절한 함수로 처리할 수 있습니다. 게임패드를 감지하고 사용하는 방법을 이해하기 위해 Movement And Controls의 Gamepad Movement 예제를 읽는 것이 좋습니다.

게임패드 "슬롯"은 0부터 시작하여 인덱스가 매겨지며, 실제 슬롯은 다양한 요인에 따라 달라집니다. Windows 타겟에서는 슬롯 0-3이 XInput 게임패드 전용입니다. 그러나 슬롯 4-11에서는 DirectInput 게임패드를 감지할 수 있습니다. 다른 플랫폼에서는 OS가 할당한 슬롯에서 패드를 감지할 수 있습니다. 예를 들어, Android 장치는 블루투스 게임패드를 슬롯에 저장하고 이후에도 해당 슬롯을 예약합니다. 따라서 연결된 게임패드가 슬롯 0에 연결되어 있다고 가정할 수 없습니다.

이로 인해 연결된 게임패드를 감지할 때 AsyncSystemevent를 사용하는 것이 좋습니다. Windows에서 DirectInput 게임패드를 사용할 때, 버튼이 눌렸을 때 예상하는 것과 다를 수 있습니다. 따라서 게임 내에서 게임패드 버튼을 재정의할 수 있는 설정 화면을 만드는 것이 좋습니다.

입력 상수

게임패드 기능을 사용할 때 입력은 축, 버튼 또는 해치에서 올 수 있으며, GameMaker는 다음과 같은 내장 상수에 할당합니다:

상수 설명
gp_axislh 왼쪽 스틱 수평 축 (아날로그)
gp_axislv 왼쪽 스틱 수직 축 (아날로그)
gp_axisrh 오른쪽 스틱 수평 축 (아날로그)
gp_axisrv 오른쪽 스틱 수직 축 (아날로그)

DualSense 게임패드에서만 사용할 수 있는 상수:

상수 설명
gp_axis_acceleration_x 게임패드의 X축 가속도
gp_axis_acceleration_y 게임패드의 Y축 가속도
gp_axis_acceleration_z 게임패드의 Z축 가속도
gp_axis_angular_velocity_x 게임패드의 X축 각속도
gp_axis_angular_velocity_y 게임패드의 Y축 각속도
gp_axis_angular_velocity_z 게임패드의 Z축 각속도
gp_axis_orientation_x 게임패드의 X 방향
gp_axis_orientation_y 게임패드의 Y 방향
gp_axis_orientation_z 게임패드의 Z 방향
gp_axis_orientation_w 게임패드의 W 방향

함수 목록

다음은 모든 게임패드 함수 목록입니다:

함수 설명
gamepad_is_supported 게임패드 지원 여부 확인
gamepad_is_connected 게임패드 연결 여부 확인
gamepad_get_guid 게임패드 GUID 가져오기
gamepad_get_device_count 연결된 게임패드 수 가져오기
gamepad_get_description 게임패드 설명 가져오기
gamepad_get_button_threshold 버튼 임계값 가져오기
gamepad_get_axis_deadzone 축 데드존 가져오기
gamepad_get_option 게임패드 옵션 가져오기
gamepad_set_button_threshold 버튼 임계값 설정
gamepad_set_axis_deadzone 축 데드존 설정
gamepad_set_vibration 진동 설정
gamepad_set_colour 색상 설정
gamepad_set_option 게임패드 옵션 설정
gamepad_axis_count 축 수 가져오기
gamepad_axis_value 축 값 가져오기
gamepad_button_check 버튼 체크
gamepad_button_check_pressed 버튼 눌림 체크
gamepad_button_check_released 버튼 떼어짐 체크
gamepad_button_count 버튼 수 가져오기
gamepad_button_value 버튼 값 가져오기
gamepad_hat_count 해치 수 가져오기
gamepad_hat_value 해치 값 가져오기

게임패드의 물리적 입력을 직접 매핑하는 함수도 존재합니다. 이 함수들은 Windows Desktop, Ubuntu, macOS 및 Android 플랫폼에서만 사용됩니다.

함수 설명
gamepad_get_mapping 매핑 가져오기
gamepad_test_mapping 매핑 테스트
gamepad_remove_mapping 매핑 제거

DirectInput 게임패드는 협력 모드로 실행되며, 게임이 포커스를 잃으면 입력이 감지되지 않습니다. 게임이 포커스를 다시 얻으면 입력이 다시 감지됩니다.

호환성

현재 플랫폼 간 호환성 목록은 다음과 같습니다:

플랫폼 지원 여부 최대 연결 장치 수
Windows 완전 지원 12개 (0-11)
macOS 지원 4개
Ubuntu 지원 -
HTML5 지원 -
iOS 지원 -
Android 지원 -

게임패드 입력을 활용한 다양한 예제:

// 게임패드 연결 확인
if (gamepad_is_connected(0)) {
    show_message("게임패드가 연결되었습니다.");
}

// 왼쪽 스틱의 수평 축 값 가져오기
var left_stick_x = gamepad_axis_value(0, gp_axislh);
if (left_stick_x > 0) {
    // 오른쪽으로 이동
} else if (left_stick_x < 0) {
    // 왼쪽으로 이동
}

// 버튼 눌림 체크
if (gamepad_button_check(0, gp_face1)) {
    // 버튼 1이 눌렸을 때의 동작
}

// 진동 설정
gamepad_set_vibration(0, 1.0, 1.0); // 왼쪽, 오른쪽 진동

이와 같은 방식으로 게임패드를 활용하여 다양한 입력을 처리할 수 있습니다.

Read more

기술 문서 해설 및 활용 예제

이 문서는 특정 기술에 대한 설명과 활용 방법을 다룹니다. 아래에서 내용을 쉽게 이해할 수 있도록 해설하고, 다양한 활용 및 응용 예제를 추가로 제공합니다. 기술 개요 이 기술은 게임 개발에서 자주 사용되는 기능으로, 특정 작업을 자동화하거나 효율적으로 처리하는 데 도움을 줍니다. 주로 게임의 로직을 구성하거나 사용자 인터페이스를 제어하는 데 사용됩니다. 주요

By 이재협/실장/시스템개발실/PHYSIA

키워드 설명서

이 문서는 특정 키워드에 대한 설명과 사용법을 제공합니다. 문법 (arguments); 인수 인수 이름 유형 설명 argument_name 인수에 대한 설명을 여기에 작성합니다. 반환값 (선택적 설명) 예제 code_example() { // 여기에 코드 예제를 설명합니다. } 코드 예제 설명 위의 코드 예제는 특정 기능을 수행하는 함수의 기본 구조를 보여줍니다. 이 함수는 인수를 받아들이고, 특정

By 이재협/실장/시스템개발실/PHYSIA

GameMaker 환경 설정 및 기능

이 문서에서는 GameMaker의 환경 설정 및 다양한 IDE 기능에 대한 정보를 제공합니다. 다음은 주요 항목들입니다: IDE 환경 설정 IDE(통합 개발 환경) 설정은 GameMaker의 전반적인 사용 경험을 조정하는 데 도움을 줍니다. 여기서 사용자는 개인의 필요에 맞게 다양한 옵션을 설정할 수 있습니다. 주요 설정 항목 설정 항목 설명 테마 IDE의 색상

By 이재협/실장/시스템개발실/PHYSIA

GameMaker IDE 설명서

GameMaker IDE는 게임을 만들고 소프트웨어에서 제공하는 모든 기능을 활용하는 주요 인터페이스입니다. 이 프로그램은 시작 화면부터 게임을 만들기 위해 사용하는 모든 편집기 창까지 포함되며, 매뉴얼과 다양한 튜토리얼에서 IDE라고 언급됩니다. IDE의 구성 요소 다음 섹션에서는 IDE에 대한 정보를 다룹니다: 1. 설정 및 기능 IDE의 설정 및 기능은 사용자가 게임 개발을 보다 효율적으로

By 이재협/실장/시스템개발실/PHYSIA