Godot Monster Collector: Character Animations
Character 클래스를 부모로 하여 Player와 Trainer가 공통 데이터(텍스처, 충돌, 이동, 애니메이션)를 공유하도록 설계하여 효율성을 높였습니다. 🧬
Level 씬 아래 Background, Objects, 그리고 그 안에 Characters를 두어 명확하고 체계적인 씬 구조를 확립했습니다. 🌳
- 기본
Character 씬은 CharacterBody2D를 루트로, 4x4 애니메이션 프레임을 가진 Sprite2D와 캡슐 형태의 CollisionShape2D를 포함합니다. 👤
Player와 Trainer는 Character 씬을 상속받아 생성되어 핵심 기능을 재사용할 수 있도록 했습니다. 🔗
- 부모 클래스에
class_name Character를 정의하여 Player 및 Trainer 스크립트가 Character를 확장(extends)하도록 하여 코드 상속을 보장했습니다. 📜
- 전역
data.gd의 열거형(enum)을 통해 character_style 변수를 내보내(export) 캐릭터 외형을 동적으로 선택하고 텍스처를 로드할 수 있게 했습니다. 🎨
Player에 Camera2D를 추가하고 줌 레벨을 3으로 설정하여 게임 플레이 중 캐릭터 가시성을 향상시켰습니다. 📸
get_input 함수로 플레이어 방향(Vector2)을 캡처하고, move 함수는 방향과 speed를 기반으로 속도를 업데이트하며 move_and_slide로 물리적 이동을 처리합니다. 🎮
TileMap을 사용하여 배경에 잔디 텍스처를 추가함으로써 플레이어 이동에 대한 시각적 맥락을 제공했습니다. 🏞️
animate 함수를 통해 복잡한 애니메이션 트리를 사용하지 않고도 캐릭터의 정지 및 걷기 애니메이션 상태를 관리하는 로직을 구현했습니다. 🚶
face_direction (반올림된 방향 벡터)을 전역 data.character_view_directions 딕셔너리(0=아래, 1=왼쪽, 2=오른쪽, 3=위)를 사용하여 sprite_2d.frame_coords.y에 매핑했습니다. 🧭
current_h_frame (float)을 animation_speed * delta만큼 증가시키고 H_frames로 모듈러 연산하여 걷기 애니메이션의 수평 프레임을 순환시켰습니다. 🔄
- 플레이어가 움직이지 않을 때(
direction이 0일 때) current_h_frame을 0으로 재설정하여 현재 바라보는 방향의 정지 프레임을 표시하도록 했습니다. 🛑
Trainer는 Character를 상속받아 제자리에 서 있거나, 플레이어를 감지하면 다가가 대화를 시작하고, 플레이어가 대화를 걸 수도 있도록 추후 개발될 예정입니다. 🤖