遇到了一个很奇妙的bug
gamemaker吧
全部回复
仅看楼主
level 5
是这样的,新人这两天正在学习状态机,不知道为什么在跳跃状态上出现了一个bug,实在不知道哪里错了,求教各位大神
具体表现为,当状态从行走变为跳跃时上移的高度明显高于状态从待机变为跳跃时
个人思路是这样的,我分为待机,行走,跳跃三个状态
待机和行走转入跳跃时运行一次上移的代码,当进入跳跃状态时,只要竖直速度不为零且下方无物体碰撞,就继续保持跳跃状态,只有当竖直速度为零且下方有物体碰撞时,根据水平速度变为待机或行走状态。
以下为代码
2024年06月07日 04点06分 1
level 5
这是行走状态转换的代码,待机的代码跟他几乎一样,唯一的区别是把hsp改为不等于零
2024年06月07日 04点06分 2
level 5
这是跳跃转换状态代码
2024年06月07日 04点06分 3
level 5
所以到底是什么原因出的bug啊[泪][泪][泪]
2024年06月07日 04点06分 4
level 2
[滑稽]为啥要检测碰撞体积?[滑稽]
state_idle = function()
{
}
这才是你要的状态机好吧。
\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\
state_jump = function()
{
control_player(); //按键脚本
velv *= 0.4 ; // 跳跃 y移动速度
if(sprite_index != spr_player_jump && velz <= 0)
{
// 只有不在空中攻击才会跳跃
if(sprite_index != spr_player_jump_punch && sprite_index != spr_player_jump_kick)
{
sprite_index = spr_player_jump;
image_index = 0;
}
}
if(image_index >= image_number - 1)
{
image_index = image_number - 1;
}
if(punch)
{
state = state_jump_punch;
}
if(kick)
{
state = state_jump_kick;
}
applying_gravtiy(grav); // 重力脚本
// 落地下蹲
if(z == 0)
{
state = state_squat;
}
}
2024年06月11日 13点06分 5
[花心][花心][花心][花心]谢谢
2024年06月12日 00点06分
level 2
//使用重力
function applying_gravtiy(_grav = 0.15)
{
//改变z轴
z += velz;
//如果不在地面则增加重力
if(z < 0)
{
velz += _grav;
}
else
{
velz = 0;
z = 0;
state = state_idle;
}
}
2024年06月11日 13点06分 6
level 2
velz = 0;
z = 0;
velz_speed = 3.5;
velz = -velz_speed;
2024年06月11日 13点06分 7
1