【发布时间】:2020-09-29 21:14:58
【问题描述】:
在学习了 YouTube 上 Shaun Spalding 的游戏制作者 2 平台游戏教程之后,我正在尝试在一个简单的平台游戏游戏中开发基本的敌人 AI。我的代码与教程中的代码完全相同,但由于某种原因,当我的敌人检测到与墙壁发生碰撞时,他会按照他的假设转身,然后检测到另一个没有碰撞的地方,导致他再次转身。
这是我的代码:
// Horizontal collision
if (place_meeting(x+hsp, y, oWall)) {
show_debug_message(hsp)
while (!place_meeting(x+sign(hsp), y, oWall)) {
x += sign(hsp); // slows down I think
}
hsp = -hsp;
}
x += hsp;
-hsp 部分是他转身的地方。不知何故,他一这样做就检测到了另一次碰撞,即使 hsp 的值是倒置的。谁能指出我为什么会发生这种情况?
(hsp 的值在 3 处初始化,仅在反转时从未改变)。
【问题讨论】: