大家好!

我刚刚开始学习游戏开发,没有任何编程经验,我只花了两周的时间就已经开始写游戏代码。为了提高我的编程水平,我使用了 Grok,这个工具确实很有帮助。我想让我的角色在持续按下空格键的时候能够跳得更高,所以我添加了相应的代码。但令人失望的是,现在我的角色在地板上不停地抖动,我不确定如何停止这种抖动。这个情况下,希望大家可以提供帮助。以下是目前我的代码:

创建事件:
//移动速度

move_speed = 4 //移动速度

grav = 0.6;//重力强度,越高越快

jump_speed = -10 //跳跃速度

vsp = 0;//初始垂直速度

jump_hold_time = 12;//持续按住空格键的时间,越长越高

jump_timer = 0;//计时器

//===Coyote Time Settings===

coyote_time = 8;//跳跃窗口大小,越小越快

coyote_timer = 0;//计时器

----------------------------------------------------------------
步骤事件:

// === 1. 水平运动 ===

var move = 0;

if (控制器_检查(ord("A"))) move -= 1;

if (控制器_检查(ord("D"))) move += 1;

x += move * move_speed;

// === 2. 跳跃 (第一步) ===

if (控制器_检查按下(vk_space)) {

if (处于(obj_地板)) {

vsp = jump_speed;

跳跃计时器 = 1;

提示_debug_message("JUMP_START - vsp = " + string(vsp));

}

}

// === 3. 定制跳跃高度 ===

if (控制器_检查(vk_space)) {

跳跃计时器 += 1;

} else {

跳跃计时器 = 0;

}

if (控制器_检查按下(vk_space) && 跳跃计时器 < jump_hold_time && vsp < 0) {

vsp += grav * 0.35;

提示_debug_message("REDUCED_GRAVITY_ACTIVE - timer: " + string(jump_timer) + " vsp: " + string(vsp));

}

// === 4. 重力 ===

vsp += grav;

// === 5. 垂直运动 ===

y += vsp;

// === 6. 基础碰撞 ===

if (处于(x, y, obj_地板)) {

while (处于(x, y, obj_地板)) {

y -= 1;

}

vsp = 0;

}

// 每一帧的原始调试

提示_debug_message("vsp = " + string(vsp) + " | jump_timer = " + string(jump_timer));

---------------------------------------

我试着解决这个问题,但是却越来越迷糊。衷心感谢看了这个问题!