해당 내용 출처 :) https://docs.godotengine.org/en/stable/getting_started/first_2d_game/index.html
이전 내용:) https://twd0622.tistory.com/91
저번 포스팅에선 HUD를 만들어 게임을 하면서 다양한 정보를 확인할 수 있도록 많들었다.
이번 포스팅에선 게임을 좀 더 풍성하게 만들어줄 배경, 음악, 단축키 등을 설정해 보겠다.
이번 포스팅에서 할 작업들은 그대로 따라할 필요가 없이 자신만의 아이디어로 게임플레이를 자유롭게 확장하면 좋을 것 같다.
7장 게임 마무리
7-1 배경 변경
기본적으로 제공해주는 회색배경은 그다지 매력없다고 생각한다. 그래서 본인이 넣고 싶은 색으로 변경해보자.
먼저 'Main'노드에 자식 노드로 'ColorRect' 노드를 추가해 준다.
이 'ColorRect'노드는 자식노드들 중 가장 위에 오도록 끌어올려준다.
- ColorRect: 단색 직사각형을 표시
이 'ColorRect'노드엔 Color라는 속성만 존재하기 때문에 인스팩터 메뉴에서 Color를 원하는 색으로 바꾸고,
Control > Layout > Anchors Preset을 공간전체로 설정해준다.
그리고 플레이해보면
배경색이 바뀐것을 확인할 수 있다.
- 'TextureRect'노드를 사용하면 단색이 아닌 이미지를 이용해 배경을 삽입하는 것이 가능하다.
7-2 사운드 삽입
이번엔 사운드를 삽입해서 좀 더 게임에 몰입할 수 있도록 만들어 보겠다.
예전에 저장해둔 Asset중 Art폴더에 있는 'gameover.wav'와 'House In a Forest Loop.ogg'를 적용해보겠다.
배경용 음악은 'House In a Forest Loop.ogg'고 플레이어가 게임오버 됬을땐 'gameover.wav'를 사용하겠다.
먼저 'Main'노드에 'AudioStreamPlayer' 노드를 2개 만들어 주고 각각 이름을 'Music'과 'DeathSound'로 바꿔준다.
'Music'노드를 누르고 인스펙터 메뉴에서 Stream에 불러오기를 눌러
'House In a Forest Loop.ogg'를 추가해주고
똑같은 방식으로 'DeathSound'노드에는 'gameover.wav'를 추가해주자.
음악이 반복해서 플레이 시켜주는 Loop설정이 비활성화된 상태로 오디오를 자동으로 가져오기 때문에, 음악을 원활하게 반복되도록 하려면 스트림 파일 옆 화살표를 눌러 '유일하게 만들기'를 클릭하고 파일을 눌러 Loop를 활성화 시켜준다.
이제 스크립트에서
new_game() 함수에 $Music.play()를 추가해주고 game_over()함수에 $Music.stop() 코드를 추가해주자.
마지막으로 game_over()함수에 $DeathSound.play()를 추가해주면 된다.
# Player씬에서 hit() 신호를 보낼 경우
func game_over() -> void:
$ScoreTimer.stop()
$MobTimer.stop()
$HUD.show_game_over()
$Music.stop()
$DeathSound.play()
func new_game():
score = 0; # 점수 초기화
$Player.start($StartPosition.position) # 플레이어 위치 설정
$StartTimer.start() # 2초 대기
$HUD.update_score(score)
$HUD.show_message("Get Ready")
get_tree().call_group("Mobs", "queue_free")
$Music.play()
- DeathSound는 loop설정을 하지 않았기 때문에 stop 설정을 따로하지 않아도 된다.
이제 게임을 플레이해보면 배경음악이 플레이되고 몹과 붙딪혀 게임오버가되면 게임오버 사운드가 들린다.
7-3 단축키 설정
대기화면에서 StartButton을 클릭해도 게임이 실행 되지만 더 간편하게 Enter키만 눌러도 게임이 실행되게 만들어 주겠다.
예전 Player씬을 만들때 방향키 설정을 해준것과 유사하게 진행된다.
먼저 프로젝트 > Project Settings... > 입력 맵으로 들어가준다.
새로운 액션 추가에 'start_game'이라고 입력하고 추가 버튼을 눌러준다.
그럼 액션 목록에 start_game이 추가되는데 왼쪽에 있는 + 버튼을 눌러 Enter키를 이벤트로 추가해주면
사진처럼 start_game 액션이 추가된 것을 알수있다.
이제 HUD씬에 'StartButton' 노드에서 인스펙터 메뉴에 BaseButton > Shortcut 속성을 찾아 새 Shortcut을 눌러준다.
1.Shortcut > 2.Events > 3. +요소추가 버튼을 누르면 크기가 늘어나면서 이벤트를 추가할수있는데
InputEventAction을 추가해주고 해당 이벤트를 열어서 Action에 'start_game'을 넣어준다.
Action엔 아까 Enter키를 설정해준 Action이름과 동일하게 해주어야한다.
그럼 이제 게임을 플레이할때 마우스를 사용하지않고 Enter키만 눌러도 게임이 시작된다.
이렇게하면 2D Game Tutorial은 완성이다.
2D게임의 튜토리얼을 따라서 한번 만들어 보았는데 이제 2D게임의 다른 기능들을 찾아서 만들어 보려고한다.
이외에도 GDScript 문법이나 GodotEngine의 기능을 알게되면 추가로 포스팅하도록 하겠다.
'Godot Engine > 게임 제작' 카테고리의 다른 글
[GodotEngine] Tutorial 2D Game - 6 (1) | 2024.12.27 |
---|---|
[GodotEngine] Tutorial 2D Game - 5 (0) | 2024.12.27 |
[GodotEngine] Tutorial 2D Game - 4 (0) | 2024.12.19 |
[GodotEngine] Tutorial 2D Game - 3 (2) | 2024.12.16 |
[GodotEngine] Tutorial 2D Game - 2 (0) | 2024.12.11 |