“忽略无法移动”命令不起作用

所以我有一个基本完成的简单家具系统。

当玩家放置一件家具时,游戏会执行以下精确的命令集。

将家具变量设置为 Table
将 Table 设置为“可穿透”模式
将玩家向后移动 1 格并开启开关 150,如果无法移动则忽略
(如果 150 处于关闭状态…)
将玩家向上旋转并移动玩家向后 1 格并开启开关 150,如果无法移动则忽略,等待
(如果 150 处于关闭状态…)
将玩家旋转并移动玩家向后 1 格并开启开关 150,如果无法移动则忽略,等待
(如果 150 处于关闭状态…)
将玩家向左旋转并移动玩家向后 1 格并开启开关 150,如果无法移动则忽略,等待
(如果 150 处于关闭状态…)
将玩家向右旋转并移动玩家向后 1 格并开启开关 150,如果无法移动则忽略,等待
(如果 150 处于关闭状态…)
将玩家传送至房间入口

将 Table 设置为“不可穿透”模式

(如果 150 处于开启状态…)

关闭开关 150

基本上,这会将家具放置好,使其变为“可穿透”状态,然后尝试在所有方向上将玩家向后移动 1 格,以防止他们卡在家具内部。如果玩家无法移动(例如把自己逼到了角落),他们将被传送到一个空旷的位置。

然而,命令中的“如果无法移动则忽略”部分似乎没有起作用。如果玩家无法移动,无论什么情况都会开启开关 150,而没有任何其他反应。请问有什么解决办法吗?

你误解了“无法移动时跳过”的功能。它并不是中止整个路线,而是跳过那个失败的移动指令,继续执行下一个指令。因此,开关开启指令始终会执行。简而言之,使用开关来判断是否成功移动是行不通的。

我认为你需要做的是:在此操作开始前,先存储玩家当前的位置,然后在执行完移动路线后再次存储(使用不同的变量)。如果任一坐标发生了变化,说明玩家成功移动了。否则,尝试下一个方向。