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

GameMaker Studio 2水平碰撞实现时按键控制反向问题求助

解决GameMaker Studio 2水平碰撞与按键反向问题

首先明确核心问题:你代码里的移动方向完全写反了,GameMaker的坐标系统中,x轴向右为数值增大,向左为数值减小,同时碰撞检测的逻辑也存在错误,下面是修正方案:

错误点梳理

  • 按键控制逻辑反向:按左键时执行x += 2(实际向右移动),按右键时执行x -= 2(实际向左移动),直接导致控制反向
  • 碰撞检测偏移错误:左右碰撞的检测位置方向不对,碰撞后的位置修正逻辑也完全颠倒

修正后的Step事件代码

// Step事件代码
// 左键控制向左移动
if keyboard_check(vk_left) && dleft = true {
    x -= 2; // 向左移动,x值减小
    // 检测角色左侧是否碰撞地面
    if place_meeting(x - 12, y, Ground) {
        // 碰撞后修正位置,回到移动前的状态
        x += 2;
    }
}

// 右键控制向右移动
if keyboard_check(vk_right) && dright = true {
    x += 2; // 向右移动,x值增大
    // 检测角色右侧是否碰撞地面
    if place_meeting(x + 12, y, Ground) {
        // 碰撞后修正位置,回到移动前的状态
        x -= 2;
    }
}

补充说明

  • 如果你用的是自定义输入映射(不是系统默认的vk_left/vk_right),替换成你的输入检测函数即可,比如input_check("left")
  • 代码里的x±12是角色碰撞盒的偏移量,你可以根据自己角色的实际碰撞大小调整这个数值
  • 碰撞修正逻辑是:先执行移动,检测到碰撞就将位置回退到移动前的状态,避免角色卡入地面

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.07 13:12:10