现在我们的玩家可以被敌人伤害,我们可以继续实现该功能,以便他们可以死亡,如果他们已经死亡,游戏就结束了,并显示游戏结束屏幕。稍后,我们将在此游戏结束系统的基础上进行构建,以便我们重定向到主菜单屏幕。

您将在本部分中学习到的内容:

· 使用 AnimationPlayer 节点进一步练习。
· 进一步练习使用 CanvasLayer 节点。

在 Player 场景中,向 UI 节点添加新的 Label 和 ColorRect。将 ColorRect 重命名为“GameOver”。它应该如下所示:
1.jpg

将 GameOver 节点的大小更改为游戏窗口的大小 (x: 320, y: 180)。此外,将其 Color 属性更改为 #d6c376。
2.jpg

选择你的 Label 节点,将其文本更改为“GAME OVER!!!”。确保它是大写的,并将锚点预设更改为居中。
3.jpg

让我们为这个标签分配一个新字体。在“控制”>“主题覆盖”>“字体”下,快速加载新字体并选择字体为“Schrödinger.tff”。将字体大小设置为 20。
4.jpg

现在通过单击旁边的眼睛图标来隐藏 GameOver 节点。
5.jpg

在窗口底部的动画面板中,单击动画标签创建一个新动画。将此动画命名为“game_over”。
6.jpg
7.jpg

对于此动画,我们希望当玩家死亡时,游戏结束屏幕会慢慢显示出来。因此,我们将更改 ColorRect 节点 (GameOver) 的调制属性。添加新的 Property Track 并将其连接到 GameOver 节点。
8.jpg

选择调制值属性并添加两个键 - 一个在关键帧 0,另一个在关键帧 1。
9.jpg
10.jpg

选择第一个关键帧 (0),然后将 Value 属性中的 Alpha 值更改为 0。这是因为我们希望窗口从不可见变为可见。您可以播放动画来查看我们想要的效果。
11.jpg

现在,在我们的死亡条件之下的玩家伤害代码中,让我们播放这个动画。

### Player.gd

# older code
# ------- Damage & Death ------------
#does damage to our player
func hit(damage):
    health -= damage    
    health_updated.emit(health, max_health)
    if health > 0:
        #damage
        animation_player.play("damage")
        health_updated.emit(health, max_health)
    else:
        #death
        set_process(false)
        animation_player.play("game_over")

如果您运行场景,并且玩家被击中次数足够多,以至于其生命值低于 0,则应该显示游戏结束屏幕。稍后我们将使此屏幕在返回主屏幕时可暂停。
12.jpg

现在我们的玩家可以“死亡”,游戏会通知我们游戏结束了。我们将在接下来的几部分中继续改进这个系统,但在下一部分中,我们将添加等级和 XP 功能,这将在完成任务或杀死敌人后增加我们的 XP 和等级。记得保存你的项目,下一部分见。

标签: Godot, 2D游戏, 游戏开发, 游戏自学

添加新评论