游戏开发学习 Day20:封闭地图,金币计数

时间:2023-02-09 10:12:19来源:哔哩哔哩

2023 年 2 月 9 日


(相关资料图)

一、封闭地图

之前咱们的关卡虽然算是基本完成了,但是还有一个明显问题:边缘不封闭。这会导致玩家掉落到地图外无限下落,无法死亡。

有三种解决办法:

在地图下边缘加一层“死亡线”(Area2D型),添加玩家触碰死亡的逻辑;

判断玩家 y 坐标,低于某个值之后就判断死亡,比上一种更简单直接;

直接用地图 Tile 把整个关卡封闭起来,又比上一种更简单直接,而且玩家很好理解,也是现在游戏的常见做法。

于是我选择了第三种方案,用 TileMap 工具把地图封闭起来了。这个过程中我还发现一个 bug,地图区块和添加的地刺等道具始终没法网格对齐,还以为是网格设置有问题,最后发现是之前添加 TileMap 控件的时候没有把坐标设置成 (0,0),导致整体地图发生了偏移,于是又重新画了一遍地图……

二、金币计数

玩家吃金币有什么用?连数量都显示不出来!这回终于学到了,加入了金币计数的逻辑,先把逻辑调通,会自动打印在终端中了。

先把 BaseLevel 和 Coin 在节点这里各自新建一个分组 base_level 和 coin。

然后给 BaseLevel 添加两个计数 totalCoins(金币总数)和 collectCoins(获得金币数),再添加两个函数,用于修改金币总数和获得的金币数,并发出金币修改的信号 coin_total_changed。

要想让获得金币的数量变化,还得在 Coin 的代码里触发调用获得金币的代码,这里就会涉及到获得分组中的节点的逻辑了(BaseLevel)。

以上,下次开始学习界面 UI 显示,把相关数据显示在界面上。

关键词: 数据显示 还有一个 有什么用

相关资讯
热门频道