You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

GameMaker Studio 2平台游戏:敌人碰撞左墙跳出房间问题求助

问题修复方案

你的敌人碰撞左墙异常的问题,核心是水平碰撞检测逻辑错误,以下是具体问题和修复步骤:

核心问题分析

  1. 碰撞检测方向错误:水平碰撞时用x+walksp检测,而非当前实际移动速度hsp。当敌人向左移动时(hsp=-walksp),代码检测的是敌人右侧位置,完全没检查左墙,导致碰撞触发失败。
  2. 碰撞推离逻辑被禁用:循环内的x = x + sign(walksp)被注释,即使检测到碰撞,也不会将敌人推离墙壁,导致位置偏移。
  3. 方向反转逻辑错误:碰撞后直接将hsp设为-walksp,而非反转当前hsp方向,无法适配向左移动的场景。

修复后的代码替换

将原水平碰撞部分的代码替换为以下内容:

//Horizontal collision
if (place_meeting(x + hsp, y, oWall))
{
    // 将敌人逐步推离墙壁,直到刚好不发生碰撞
    while (!place_meeting(x + sign(hsp), y, oWall))
    {
        x = x + sign(hsp);
    }
    // 反转当前移动方向
    hsp = -hsp;
}

额外注意事项

  • 确保敌人初始化时hsp赋值正确:比如向右移动时hsp=walksp,向左时hsp=-walksp,保证sign(hsp)能正确反映移动方向。
  • 检查oWall对象的碰撞盒设置,避免因碰撞盒过小导致检测失效。

内容的提问来源于stack exchange,提问作者placeholder

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.27 09:47:47