이 카테고리는 고도 엔진(Godot Engine) 관련 문법을 기록하고 저장하기 위해 만든 공간입니다.
이번에는 게임에서 플레이어의 조작(입력)을 받는 것은 상호작용의 가장 기본적인 단계입니다. 캐릭터를 움직이거나, 총을 쏘고, UI 버튼을 클릭하는 모든 행동이 바로 이 '입력'에서 시작됩니다. 고도 엔진에서는 크게 두 가지 방법으로 입력을 처리할 수 있습니다. 바로 언제 어디서든 키보드나 마우스의 상태를 확인할 수 있는 Input 싱글톤과, 이벤트가 발생할 때마다 즉각적으로 반응하는 _input() 함수입니다.
1. Input 싱글톤: 지금 버튼 누르고 있어? (상태 확인)
Input은 고도 엔진이 기본적으로 제공하는 전역 객체(싱글톤)입니다. 게임 루프(예: _process나 _physics_process) 안에서 현재 특정 키가 눌려 있는지 매 프레임마다 확인할 때 주로 사용합니다. 캐릭터의 이동이나 자동 소총 발사처럼 '지속적인 눌림 상태'가 필요한 기능에 아주 적합합니다.
참고: 고도 엔진의 상단 메뉴 **[프로젝트] -> [프로젝트 설정] -> [입력 맵(Input Map)]**에서 ui_right, ui_accept 같은 액션(Action) 이름과 단축키를 미리 정의해 두면 코드를 훨씬 깔끔하게 관리할 수 있습니다.
func _process(delta):
# 1. is_action_pressed: 'ui_right' 액션(보통 오른쪽 화살표)을 "누르고 있는 동안" 계속 실행됩니다.
if Input.is_action_pressed("ui_right"):
position.x += 100 * delta
# 2. is_action_just_pressed: 스페이스바를 "방금 막 눌렀을 때" (딱 한 번) 실행됩니다.
if Input.is_action_just_pressed("ui_accept"):
print("점프!")
2. _input(event) 함수(이벤트 반응)
_input(event)는 엔진이 새로운 입력을 감지할 때마다 자동으로 호출되는 내장 함수입니다. 마우스 클릭, 휠 굴리기, 키보드 타이핑 등 순간적인 이벤트를 처리할 때 유용합니다. 매 프레임마다 확인하는 것이 아니라 입력이 들어올 때만 작동하므로, UI 창을 열고 닫거나 단발성 스킬을 사용하는 등의 작업에 훨씬 효율적입니다.
func _input(event):
# 1. 마우스 버튼 클릭 이벤트인지 확인합니다.
if event is InputEventMouseButton:
# 왼쪽 마우스 버튼이 '눌린' 상태인지 검사합니다.
if event.button_index == MOUSE_BUTTON_LEFT and event.pressed:
print("마우스 왼쪽 버튼 클릭 위치: ", event.position)
# 2. 특정 액션 키(ESC 등)가 방금 눌렸는지 확인합니다.
if event.is_action_pressed("ui_cancel"):
print("메뉴 창 열기!")
3. 마우스 위치 가져오기
슈팅 게임에서 총구를 마우스 방향으로 돌리거나 마우스 커서가 있는 위치에 마법진을 생성하려면, 현재 마우스의 좌표를 알아내는 것이 중요합니다. 2D 게임에서는 노드의 내장 함수인 get_global_mouse_position()을 사용하여 게임 세계(월드) 기준의 마우스 좌표를 아주 쉽게 얻어올 수 있습니다.
func _process(delta):
# 2D 게임의 경우, 게임 세계(Global) 기준 마우스 위치를 가져옵니다.
var global_mouse_pos = get_global_mouse_position()
# 플레이어 캐릭터가 항상 마우스 포인터 쪽을 바라보게 만듭니다.
look_at(global_mouse_pos)
한눈에 보는 입력 처리 핵심 요약
| 함수 / 기능 | 기능 설명 | 실전 입력 처리 활용 예시 |
| Input.is_action_pressed() | 해당 키/액션이 눌려있는 동안 계속 true를 반환합니다. | 캐릭터의 상하좌우 이동, 자동차 엑셀 밟기 등 |
| Input.is_action_just_pressed() | 해당 키/액션이 방금 눌린 순간에만 1회 true를 반환합니다. | 단발성 점프, 공격 버튼, 아이템 사용 등 |
| _input(event) | 키보드, 마우스 등의 입력 이벤트가 새롭게 발생할 때 호출됩니다. | 인벤토리 열기, 마우스 클릭 이벤트 감지 등 |
| get_global_mouse_position() | 현재 마우스 포인터의 월드(Global) 좌표를 Vector2로 가져옵니다. | 캐릭터가 마우스 방향을 쳐다보거나 그 위치로 총알을 쏠 때 |
'게임 > 고도엔진 문법' 카테고리의 다른 글
| 22. [고도 엔진] 게임 도중 총알 발사하기: 코드로 씬(Scene) 생성(instantiate) (0) | 2026.07.10 |
|---|---|
| 20. [고도 엔진] 에러 처리와 디버깅 팁 (assert, print_debug, 중단점 활용) (0) | 2026.07.08 |
| 19. [고도 엔진] 파일 입출력(FileAccess): 게임 데이터 저장하고 불러오기 (0) | 2026.07.07 |