从一个球洞开始你的迷你高尔夫游戏,瞄准杯洞会使球撞向障碍物。留出足够的空间让球从护栏反弹,然后让力度决定球是停在短处、落入杯洞还是滚过。如果玩家失误,他们应该能判断出需要调整击球的哪个部分。
这个虚构的庭院在3D课程下使用简单的网格。规则为你提供了在添加坡度或平滑滚动物理效果之前进行检查的精确路线。在球附近放置一个短方向标记和一个力度计,以便玩家在击球前做出这两个选择。

布置发球台、挡板和杯洞
使用一个宽七列、深四行的矩形课程。让 x 向东增加,y 向北增加。两个方向都从 1 开始计数。将球起始位置设在 (2, 2),在 (4, 2) 放置一个软挡板,并在 (6, 2) 放置杯洞。第一个决定是沿着行瞄准还是将球发向北侧护栏。
给玩家八个罗盘方位和从一到五的力度设置。每一点购买所选方向的一个移动步骤。在这个街机模型中,对角线移动与直线移动成本相同。在调试视图中显示网格,以便你可以将坐标与下方的路线进行比较。玩家视图可以保留草皮和护栏。
在移动球之前检查球道边界
- 根据当前朝向计算下一个格子。如果该格子位于球场之外,则反转球将要穿过的边界对应的方向分量。从球当前所在的格子重新计算。在角落处,如果两个方向分量都超出边界,则同时反转这两个分量。
- 如果下一个格子包含障碍物,则在当前格子停止并清除剩余力度。否则,移动一个格子并减去一点力度。反弹(bank)会改变方向,移动仍然消耗一点力度。
- 在减去力度后检查球洞。在第一个版本中,如果球以零力度进入球洞格子,则球落入洞中。如果球以剩余力度进入,则让其继续移动。如果在其他任何格子力度为零,则停止并允许下一次击球。

在消耗力度之前运行边界检查。球应该出现在新格子上,带有反射后的朝向和少一点力度。如果球停在边界上或穿过边界,请检查朝向何时改变以及碰撞检查使用的是哪个格子。
从同一个发球台尝试四次击球
在每次试验前将球重置到 (2, 2)。向东北方向的击球会使两个坐标各加一,直到遇到北边界。从 (4, 4) 开始,其下一步将超出边界。反转垂直分量,保持水平方向,并在反弹步骤中落在 (5, 3)。
| 瞄准和力度 | 发射后的格子序列 | 预期结果 |
|---|---|---|
| 东,4 | (3, 2),然后被 (4, 2) 阻挡 | 停在 (3, 2) |
| 东北方向,3 | (3, 3), (4, 4), (5, 3) | 在洞口前一步停下 |
| 东北方向,4 | (3, 3), (4, 4), (5, 3), (6, 2) | 剩余动力为零的洞口 |
| 东北方向,5 | (3, 3), (4, 4), (5, 3), (6, 2), (7, 1) | 以一点动力越过洞口并在其后方停下 |

在反馈中保持短停、被阻挡的击球和滚过洞口的区别。被阻挡的球在进入障碍物之前停下。短杆击球会耗尽动力。滚过洞口的球到达洞口瓦片,但在此模型的捕获规则下仍有剩余移动力。显示球停止的位置有助于玩家区分这些结果。
给 AI 一个洞和一种检查它的方法
SEELE 的 3D 游戏制作器为带有单一可见目标的紧凑浏览器原型提供了起点。提供球场布局和击球规则。你可以保持庭院材料开放,并保持移动和捕获规则固定。要求一个调试视图,使每一步都易于检查。
构建一个带有 7-by-4 调试网格的浏览器迷你高尔夫洞。
从 1 向东计数 x,从 1 向北计数 y。将球
起始于 (2, 2)。在 (4, 2) 放置一个阻挡物,在 (6, 2) 放置洞口。
允许八个罗盘方向和从 1 到 5 的整数动力。
在每一步计算下一个瓦片。如果它会超出
网格,翻转违规的方向分量,或在角落处翻转两者,
并重新计算瓦片。保持该反射方向。
如果下一个瓦片被阻挡,在当前瓦片停下并清除
动力。否则移动到该瓦片并消耗一点。在
消耗后,如果球以零动力进入 (6, 2),则捕获球。
如果还有动力,继续。在其他地方为零时,停下。
每次接受的发射计为一杆。在球移动时
忽略击球输入。在捕获时结束并显示总杆数。
重启恢复球、零杆数和未完成状态。
添加一个用于瓦片、方向、动力和杆数的调试读数。
首先检查直接击球。然后从发球台尝试所有三种东北方向的动力,并将访问的瓦片与表格进行比较。在较长的击球过程中,再次按下发射控件,检查计数是否保持为一。在进洞后,再尝试一次控件,并验证该洞是否保持完成状态。重启应恢复发球台和零杆数。关于如何分步检查 AI 游戏的指南 展示了如果一条规则失败,如何隔离后续请求。
改变洞口接受的动力量
尝试让洞口也能捕获剩余一点动力的球,而不仅仅是零。保持栏杆、阻挡物、瞄准和移动成本固定。东北方向动力五的击球现在会在第四步落下,当它以一点动力到达 (6, 2) 时。动力四仍然落下。动力三仍然停在 (5, 3),而直接击球仍然击中阻挡物。
工作表现在对于该方向有两个成功的动力设置,而不是一个。在构建版本中,观察玩家是否注意到短停和滚过洞口之间的区别。在决定是否保留更广泛的捕获规则之前,统计每种情况发生的次数。
在添加球场之前让第一个洞易于理解
构建一个障碍物、一个斜坡和一个洞口。使用相同的发球台和瞄准来检查动力如何改变停止位置。如果玩家能看到从一杆到下一杆发生了什么变化,你可以添加另一个具有明确目的的障碍物。使用 SEELE 的 3D 游戏制作器开始你的迷你高尔夫原型,并在检查第一稿时将路线表放在附近。
常见问题
第一个洞需要连续的球体物理吗?
网格足以检查瞄准、斜坡和停止距离之间的关系。如果你想要旋转、坡度或更渐进的速度变化,稍后可以使用连续移动。保留第一个洞,以便你可以看到哪些行为随着新模型而改变。
瞄准预览应该显示球路径的多少?
从第一个方向和可读的动力设置开始。这告诉玩家他们选择了什么,同时让他们自己判断停止距离。如果斜坡本身很难看清,在显示到洞口的完整路径之前,添加一个短的栏杆提示。
球滚动时按下算作一杆吗?
当击球实际开始时计为一杆。在球滚动时,保持发射控件不可用,并保持总杆数不变。一旦它停下,除非球已经在洞中,否则再次使控件可用。使用相同的发射输入检查两种结果。
什么时候应该添加另一个障碍物?
在玩家能够在第一个洞上区分碰撞和短杆或长杆之后添加一个。给新障碍物一个不同的决策,例如是否采取更宽的斜坡或使用两个较短的杆。保留原始洞作为简单的比较。


