Godot 엔진 4.0 문서 - 단계별 튜토리얼 - 플레이어 입력 듣기

이 글은 Google Translate의 영문 번역 결과이며, DrGraph는 이를 바탕으로 일부 수정 사항을 추가했습니다. 영어 원본 페이지:

플레이어 입력 듣기 — 영어로 된 Godot Engine(stable) 문서

플레이어 입력 듣기¶

첫 번째 스크립트 만들기에 대한 이전 강의를 바탕으로 모든 게임의 또 다른 중요한 특성인 플레이어에게 제어 권한을 넘기는 방법을 살펴보겠습니다. 추가하려면 sprite_2d.gd코드를 수정해야 합니다.

Godot에서 플레이어 입력을 처리하기 위한 두 가지 주요 도구가 있습니다:

  1. 내장 입력 콜백은 기본적으로 _unhandled_input().. 처럼  _process()플레이어가 키를 누를 때마다 Godot가 호출하는 내장 가상 함수입니다. 이것은 스페이스바를 눌러 점프하는 것과 같이 모든 프레임에서 발생하지 않는 이벤트에 반응하는 데 사용하려는 도구입니다. 입력 콜백에 대한 자세한 내용은 InputEvent 사용을 참조하십시오 .

  2. Input【单例singleton】. 싱글톤은 전역적으로 액세스 가능한 객체입니다. Godot는 여러 스크립트에 대한 액세스를 제공합니다. 이것은 모든 입력 프레임을 확인하는 데 적합한 도구입니다.

Input플레이어가 모든 프레임을 돌고 싶은지 또는 움직이고 싶은지 알아야 하기 때문에 여기서는 싱글톤을 사용합니다 .

회전을 위해 새 변수를 사용해야 합니다: direction. 함수 에서 _process() 이전 내용을 다음 코드 [rotation += angular_speed * delta】

GD스크립트
var direction = 0
 if Input.is_action_pressed("ui_left"):
    방향 = -1
Input.is_action_pressed("ui_right") 인 경우 :
    방향 = 1

회전 += 각도_속도 * 방향 * 델타

로컬 direction변수는 플레이어가 회전하려는 방향을 나타내는 요소입니다. 값은 0플레이어가 왼쪽 또는 오른쪽 화살표 키를 누르지 않았음을 나타냅니다. 1플레이어가 우회전을 원함을 나타내는 값 , -1즉 좌회전을 원한다는 의미입니다.

이러한 값을 생성하기 위해 InputGDScript에서 조건은 키워드로 if시작하고 콜론으로 끝나는 조건부 판단 및 사용법을 소개합니다. 특정 조건은 키워드와 행의 끝 사이에 있는 표현식입니다.

이 프레임에 대해 키가 눌렸는지 확인하기 위해 를 호출합니다 Input.is_action_pressed(). 이 메서드는 입력 작업을 나타내는 텍스트 문자열을 사용하고 해당 true 작업이 눌렸는지 false여부를 반환합니다.

위에서 사용한 두 가지 작업인 "ui_left"와 "ui_right"는 모든 Godot 프로젝트에 미리 정의되어 있습니다. 플레이어가 키보드의 왼쪽 및 오른쪽 화살표를 누르거나 게임 패드의 D-패드에서 왼쪽 및 오른쪽 화살표를 각각 누르면 발사됩니다.

참고: 프로젝트 -> 프로젝트 설정으로 이동하고 입력 매핑 탭을 클릭하여 프로젝트의 입력 작업을 보고 편집할 수 있습니다.

마지막으로 direction요소를 사용하여 노드를 업데이트합니다  rotationrotation += angular_speed * direction * delta

이 코드로 장면을 실행하면 왼쪽 및 오른쪽을 누를 때 아이콘이 회전해야 합니다.

"UP"을 누를 때 이동

키를 누를 때만 이동하려면 속도를 계산하는 코드를 수정해야 합니다. var velocity시작 줄을 아래 코드로 바꿉니다.

GD스크립트
var 속도 = Vector2.ZERO
 if Input.is_action_pressed("ui_up"):
    속도 = Vector2.UP.rotated(rotation) * 속도

velocityVector2.ZERO길이가 0인 2차원 벡터를 나타내는 Vector또 다른 내장 유형 상수인 value로 초기화합니다 .

플레이어가 "ui_up" 동작을 누르면 스프라이트가 앞으로 움직이도록 속도 값을 업데이트합니다.

전체 스크립트¶

sprite_2d.gd다음은 참조용 전체 파일입니다 .

GD스크립트
Sprite2D 확장

var 속도 = 400
 var angular_speed = PI


func _process(delta):
     var direction = 0
     if Input.is_action_pressed("ui_left"):
        방향 = -1
    Input.is_action_pressed("ui_right") 인 경우 :
        방향 = 1

    회전 += 각도_속도 * 방향 * 델타

    var 속도 = Vector2.ZERO
     if Input.is_action_pressed("ui_up"):
        속도 = Vector2.UP.rotated(rotation) * 속도

    위치 += 속도 * 델타

장면을 실행하면 이제 왼쪽 및 오른쪽 화살표 키를 사용하여 회전하고 위쪽을 눌러 앞으로 이동할 수 있습니다.

요약¶ _

요약하면 Godot의 각 스크립트는 클래스를 나타내며 엔진의 내장 클래스 중 하나를 확장합니다. 클래스가 상속하는 노드 유형은 스프라이트 예제 속성과 같은 기본 클래스 속성에 대한 액세스를 제공 rotation합니다 position. 또한 이 예제에서 사용하지 않는 많은 기능을 상속합니다.

GDScript에서 파일의 맨 위에 있는 변수는 멤버 변수라고도 하는 클래스의 속성입니다. 변수 외에도 대부분의 경우 클래스의 메서드인 함수를 정의할 수 있습니다.

Godot는 클래스를 엔진에 연결하기 위해 정의할 수 있는 여러 가상 함수를 제공합니다. 여기에는 _process()매 프레임마다 노드에 변경 사항을 적용하고 _unhandled_input()키 누름 및 버튼 누름과 같은 사용자 입력 이벤트 수신이 포함됩니다. 더 많이 있습니다.

Input싱글톤을 사용하면 코드 어디에서나 플레이어 입력에 반응할 수 있습니다. 특히 _process()루프에서 사용하게 됩니다.

신호 사용 다음 단원에서는 노드가 스크립트의 코드를 트리거하도록 하여 스크립트와 노드 간의 관계를 구축합니다.

Supongo que te gusta

Origin blog.csdn.net/drgraph/article/details/130796187
Recomendado
Clasificación