尝试为棋盘游戏编写通用代码

Trying to write generic code for a board game

我实际上正在使用 unity 开发棋盘游戏。这是一款棋盘游戏,玩家必须通过领取空的六角形盒子来连接两个对立的边界。边界在开始时分配给玩家。

我选择用 gem 代表我的空盒子,无人认领时为白色,玩家为红色或蓝色。所以我为所有 gem 制作了一个预制件。

为了检查 gem 本身和边界之间的联系,我给它们分配了稍微大一点的盒子碰撞器,这样它们就会与其他物体碰撞(触发),这样我就可以检测到是否声明了 gem 连接(直接或不直接)到边界。我写这段代码一般是因为 gem 是一个单独的预制件,天真地认为每个实体都会 运行 它自己的脚本版本。但事实并非如此。

所以我正在寻找一种替代方法来检测与边界的连接,但仍然是通用的,因为板的大小是可变的。

提前致谢!

您的问题与您如何在 Unity3D 上的游戏对象和组件中破坏游戏密切相关。

首先,使用脚本定义组件。例如,您的 gems 可能有一个脚本,其中包含与其状态相关的数据(您的白色、红色和蓝色 gems 表示空,玩家 A 和玩家 B)。

您可能需要一个游戏对象(通常称为 GameManager)来处理与游戏规则相关的所有行为,例如哪个玩家正在玩,玩家是否可以选择特定 gem 以及是否一个玩家赢得了比赛。根据游戏的复杂性,最好也有一个带有组件(脚本)的游戏对象来保持你的棋盘状态,而不是简单地从 gems 对象转换组件中获取它。

构建游戏后,您不需要碰撞器来检测连接。每次你必须检查连接时,只需遍历你的 gems 或使用你的板状态对象。

编辑:

帮助您开发游戏的参考资料: