Attention: Here be dragons

This is the latest (unstable) version of this documentation, which may document features not available in or compatible with released stable versions of Godot.

플레이어 씬과 입력 액션

다음 두 단원에서는 플레이어 씬을 디자인하고, 커스텀 입력 동작을 등록하고, 플레이어 이동 코드를 작성할 것입니다. 이 과정이 끝나면 여덟 방향으로 움직이는 플레이어 캐릭터가 완성될 것입니다.

왼쪽 상단의 메뉴로 이동하여 새 씬을 클릭하여 새 씬을 만듭니다.

../../_images/new_scene.webp

다른 노드 버튼을 클릭하고 CharacterBody3D 노드 유형을 선택하여 :ref:`CharacterBody3D <class_CharacterBody3D>`을 루트 노드로 생성합니다.

../../_images/add_character_body3D.webp

:ref:`CharacterBody3D <class_CharacterBody3D>`의 이름을 ``Player``로 지정합니다. 캐릭터 바디는 2D 게임 튜토리얼에서 사용된 영역 및 리지드 바디와 상호 보완적입니다. 리지드 바디처럼 움직이고 환경과 충돌할 수 있지만, 물리 엔진이 아닌 **사용자**가 그 움직임을 제어합니다. 점프와 스쿼시 메커니즘을 코딩할 때 이 노드의 독특한 기능을 어떻게 사용하는지 보게 될 것입니다.

더 보기

이 문서는 당신이 Godot의 다양한 물리 바디에 대해 잘 알고 있다고 가정합니다. 먼저 물리 소개를 읽어주세요.

지금은 캐릭터의 3D 모델을 위한 기초 리그를 만들겠습니다. 이렇게 하면 애니메이션을 재생하는 동안 코드를 통해 모델을 회전시킬 수 있습니다.

Player 의 자식 노드로 Node3D 노드를 추가하고 이름을 Pivot 으로 지정합니다

../../_images/adding_node3D.webp

그런 다음, 파일시스템 독에서 art/ 폴더를 더블 클릭하여 확장하고 player.glbPivot 위로 드래그 앤 드롭합니다.

../../_images/instantiating_the_model.webp

이렇게 하면 모델이 Pivot의 자식으로 인스턴스화됩니다. 이름을 Character로 변경할 수 있습니다.

../../_images/scene_structure.webp

참고

.glb 파일은 오픈 소스 glTF 2.0 사양을 기반으로 한 3D 씬 데이터를 포함하고 있습니다. 이러한 파일들은 Godot가 지원하는 FBX와 같은 독점 형식에 대한 현대적이고 강력한 대안입니다. 이러한 파일을 생성하기 위해 우리는 모델을 Blender 3D에서 디자인하고 glTF으로 내보냈습니다.

모든 종류의 물리 노드와 마찬가지로, 캐릭터가 환경과 충돌할 수 있도록 콜리전 모양이 필요합니다. 다시 Player 노드를 선택하고 자식 노드로 CollisionShape3D를 추가합니다. 인스펙터에서 모양 속성에 새로운 SphereShape3D를 추가합니다.

../../_images/add_capsuleshape3d.webp

구체의 와이어프레임이 캐릭터 아래에 나타납니다.

../../_images/sphere_shape.png

이 구체는 물리 엔진이 환경과 충돌하는 데 사용하는 모양이므로, 3D 모델에 더 잘 맞도록 조정할 필요가 있습니다. 뷰포트에서 주황색 점을 드래그하여 조금 더 크게 만듭니다. 제 구체는 반경이 약 0.8미터입니다.

그런 다음, 콜리전 모양을 위로 이동하여 바닥이 격자 평면과 대략적으로 맞추도록 합니다.

../../_images/moving_the_sphere_up.png

모양을 이동하기 쉽게 만들기 위해, Character 또는 Pivot 노드 옆에 눈 아이콘을 클릭하여 모델의 가시성을 전환할 수 있습니다.

../../_images/toggling_visibility.webp

마지막으로 sayhello.tscn과 같은 이름으로 씬을 저장합니다.

노드가 준비되었으므로 거의 코딩을 시작할 수 있습니다. 하지만 먼저 몇 가지 입력 동작을 정의해야 합니다.

입력 액션 만들기

캐릭터를 움직이기 위해 화살표 키를 누르는 것과 같은 플레이어의 입력을 받을 것입니다. Godot에서는 모든 키 바인딩을 코드로 작성할 수 있지만, 키와 버튼 세트에 레이블을 할당할 수 있는 강력한 시스템이 있습니다. 이는 스크립트를 단순화하고 더 읽기 쉽게 만듭니다.

이 시스템은 입력 맵입니다. 해당 편집기에 접근하려면 프로젝트 메뉴로 이동하여 프로젝트 설정...을 선택합니다.

../../_images/project_settings.webp

상단에 여러 탭이 있습니다. 입력 맵을 클릭하세요. 이 창에서는 상단에 새로운 액션을 추가할 수 있게 합니다. 이들은 레이블입니다. 하단 부분에서는 이 액션에 키를 바인딩할 수 있습니다.

../../_images/input_map_tab.webp

Godot 프로젝트에는 사용자 인터페이스 디자인을 위해 설계된 몇 가지 사전 정의된 동작이 포함되어 있습니다 (위의 스크린샷 참조). 내장 액션 보이기 토글을 활성화하면 이러한 동작이 표시됩니다. 여기서 이것들을 사용할 수도 있지만, 대신 게임패드를 지원하기 위해 자체 동작을 정의하겠습니다. 내장 액션 보이기는 비활성화된 상태로 두세요.

동작의 이름을 move_left, move_right, move_forward, move_back, 그리고 jump 로 지정하겠습니다.

동작을 추가하려면 상단의 입력란에 이름을 작성하고 Enter 키를 누릅니다.

../../_images/adding_action.webp

다음과 같은 주의 사항이 있습니다:

../../_images/actions_list_empty.webp

액션에 키나 버튼을 바인딩하려면 해당 액션 오른쪽의 "+" 버튼을 클릭합니다. move_left에 대해 이 작업을 수행합니다. 왼쪽 화살표 키를 누르고 확인을 클릭합니다.

../../_images/left_inputmap.webp

A 키도 move_left 동작에 바인딩합니다.

../../_images/keyboard_keys.webp

이제 게임패드의 왼쪽 조이스틱을 지원하도록 추가하겠습니다. 다시 "+" 버튼을 클릭하고 이번에는 Manual Selection -> Joypad Axes 를 선택합니다.

../../_images/joystick_axis_input.webp

다른 값은 디폴트로 두고 확인을 누릅니다.

참고

컨트롤러에 서로 다른 입력 동작을 할당하려면 추가 옵션에서 기기 옵션을 사용해야 합니다. 기기 0은 첫 번째로 연결된 게임패드에 해당하고, 기기 1은 두 번째로 연결된 게임패드에 해당하며, 계속해서 순서대로 할당됩니다.

다른 입력 액션에 대해서도 같게 수행합니다. 예를 들어, 오른쪽 화살표, D 키, 왼쪽 조이스틱의 양수 축을 move_right에 바인딩합니다. 모든 키를 바인딩한 후, 인터페이스는 다음과 같아야 합니다.

../../_images/move_inputs_mapped.webp

마지막으로 설정할 동작은 jump 동작입니다. Space 키와 게임패드의 A 버튼을 바인딩합니다.

../../_images/joy_button_option.webp

점프 입력 액션은 다음과 같아야 합니다.

../../_images/jump_input_action.webp

이것이 이 게임에 필요한 모든 동작입니다. 이 메뉴를 사용하여 프로젝트에서 키와 버튼 그룹에 레이블을 지정할 수 있습니다.

다음 부분에서는 플레이어의 움직임을 코딩하고 테스트하겠습니다.