大家好!
我刚刚开始学习游戏开发,没有任何编程经验,我只花了两周的时间就已经开始写游戏代码。为了提高我的编程水平,我使用了 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));
---------------------------------------
我试着解决这个问题,但是却越来越迷糊。衷心感谢看了这个问题!
评论 (0)