你是否曾经盯着一个问题 stare at a problem 长时间,到最后它变得更加混乱而不是更少?我怀疑这是发生在我身上 lol。 我试图完善一个简单的脚本,让 mob 落在一个平台对象上,如果它沿着它的落地轨迹/platform object。 我已经在几种不同的方式下成功了,但总是会发现一些小 bug。 这个问题总是会出现一些特定的情况,例如 mob 落在下面/platform 等。 我希望有人可以帮助我清除一些问题。 最简单的方式我理解是这样:如果 mob.y < obj_platform.bbox_top) && (mob.y + ySpeed >= obj_platform.bbox_top)), 然后将 mob 移动到平台的顶部并重置 ySpeed/重力为 0。 <<“ySpeed”是一个变量,累积一个值“grav”每帧(基本上与内置常数相同)。 我知道所有这些都有效,并且为了澄清:我没有任何问题与我的跳跃/落地代码。 我困惑的是“obj_platform”在这里的通用使用。如果我有多个平台对象在房间中,是否会迭代检查每个对象? 如果有多个平台满足落地要求,但其中一个比其他的更近? 我也重写了代码,基本上使用 instance_count(obj_platform),然后对每个实例运行一个 instance_find() 循环。 这与上面的代码基本相同,正确吗? 它确实给我更多的控制 - 例如,我可以将每个实例范围内的实例推入另一个数组 _platforms,然后按距离 mob 沿 Y 轴的距离对该数组进行排序,最后我可以假设 _platforms[0](如果有的话)是最接近的有效平台,并落在上面。 否则 mob.y += ySpeed 和 ySpeed += grav。 对于这个问题,最近我的代码在多个平台之间工作得非常好,EXCEPT 当有两个紧邻的平台,其中一个比另一个低 1px 时。 从这个平台走向更高的平台(不会被考虑落地,因为它更高)会导致 mob 正确落地,但继续落入任何下方的平台 lol。 我的主要问题是:简单地执行“如果 obj_plat 满足要求等等”会与执行“instance_count”然后循环每个实例 [n]一样好吗? 或者说,哪个更好?
与坠落/着陆代码的斗争
评论 (0)