728x90
본 게시글은 고도엔진 공식문서에 작성된 Listening to player input를 정리하였습니다.
- 고도 엔진은 2가지 방식으로 플레이어 입력을 처리한다.
_UnhandledInput
메소드를 오버라이드 한다.- 플레이어가 입력할 때마다 호출된다.
- 매 프래임 마다 입력 중인지 아닌지 확인할 필요가 없는 작업에 적합하다.
Input
클래스 사용Input
클래스를 전역으로 호출할 수 있다.- 매 프리임 마다 입력 중인지 아닌지 확인해야 되는 작업에 적합하다.
실습
- [GodotDoc][Step by step] 3. 첫 번째 스크립트 만들기(C#) 에서 이어서 작업한다.
_Process
메소드 내부의Rotation += angularSpeed * (float)delta;
를 아래 내용으로 수정한다.- 아래 코드는 좌/우 방향키를 누르고 있을 때만 방향키와 동일한 방향으로 회전하도록 만들어준다.
var direction = 0;
if (Input.IsActionPressed("ui_left"))
direction = -1;
if (Input.IsActionPressed("ui_right"))
direction = 1;
Rotation += angularSpeed * direction * (float)delta;
Input.IsActionPressed
- 매 프래임 마다 매핑된 키를 누르고 있는지 안 누르고 있는지 확인할 때 사용한다.
- 누르고 있으면
true
, 안 누르고 있으면false
를 반환한다.
- 입력 매핑
- Project>Project Settings... 를 선택하였을 때 열리는 팝업창에서 어떤 키를 입력하였을 때 어떤 동작이 발생하게 되는지 설정할 수 있다.
ui_left
와ui_right
는 프로젝트에 기본 설정된 입력 동작이다.ui_left
는 키보드 왼쪽 방향키, 컨트롤러 왼쪽 방향키, 컨트롤러 왼쪽 D-Pad를 왼쪽으로 옮겼을 때 동작한다.ui_right
는 키보드 오른쪽 방향키, 컨트롤러 오른쪽 방향키, 컨트롤러 왼쪽 D-Pad를 오른쪽으로 옮겼을 때 동작한다.
_Process
메소드 내부의var velocity = Vector2.Up.Rotated(Rotation) * speed;
를 아래 내용으로 수정한다.- 아래 코드는 위쪽 방향키를 누르고 있을 때만 아이콘을 기준으로 위쪽으로 이동하도록 만들어준다.
var velocity = Vector2.Zero;
if (Input.IsActionPressed("ui_up"))
velocity = Vector2.Up.Rotated(Rotation) * speed;
MySprite2D.cs
파일을 저장한다.- 오른쪽 상단의 Run Project 를 선택하여 결과를 확인한다.
완성된 스크립트
using Godot;
using System;
public partial class MySprite2D : Sprite2D
{
int speed = 400;
float angularSpeed = Mathf.Pi;
public MySprite2D()
{
GD.Print("Hello, world!");
}
public override void _Process(double delta)
{
var direction = 0;
if (Input.IsActionPressed("ui_left"))
direction = -1;
if (Input.IsActionPressed("ui_right"))
direction = 1;
Rotation += angularSpeed * direction * (float)delta;
var velocity = Vector2.Zero;
if (Input.IsActionPressed("ui_up"))
velocity = Vector2.Up.Rotated(Rotation) * speed;
Position += velocity * (float)delta;
}
}
'Godot' 카테고리의 다른 글
[GodotDocs][Step by step] 5. 시그널 사용(C#) (4) | 2024.01.04 |
---|---|
[GodotDocs][Step by step] 5. 시그널 사용(GDScript) (2) | 2024.01.04 |
[GodotDocs][Step by step] 4. 플레이어 입력 수신(GDScript) (0) | 2023.12.29 |
[GodotDocs][Step by step] 3. 첫 번째 스크립트 만들기(C#) (0) | 2023.12.27 |
[GodotDocs][Step by step] 3. 첫 번째 스크립트 만들기(GDScript) (0) | 2023.12.27 |