我一直在尝试让我的控制器正常工作,但就是不行。我反复查找错误很多次,甚至重新编写了第二遍,但我就是找不到错误!这快把我逼疯了,而且我知道这很可能是一个显而易见的低级错误,但请帮帮我。
function getControls(){
var _pad = 0
//方向键
key_right = keyboard_check(vk_right) || keyboard_check(ord("D")) || (_pad != -1 && (gamepad_button_check(_pad, gp_padr) || gamepad_axis_value(_pad, gp_axislh) > 0.5));
/*限制范围*/key_right = clamp(key_right,0,1)
key_left = keyboard_check(vk_left) || keyboard_check(ord("A")) || (_pad != -1 && (gamepad_button_check(_pad, gp_padl) || gamepad_axis_value(_pad, gp_axislh) < -0.5));
/*限制范围*/key_left = clamp(key_left,0,1)
//视角
key_up = keyboard_check(vk_up) || keyboard_check(ord("W")) || (_pad != -1 && gamepad_axis_value(_pad, gp_axisrv) < -0.5);
key_down = keyboard_check(vk_down) || keyboard_check(ord("S")) || (_pad != -1 && gamepad_axis_value(_pad, gp_axisrv) > 0.5);
//动作
key_jump = keyboard_check(vk_space) || (_pad != -1 && gamepad_button_check(_pad, gp_face1));
/*限制范围*/key_jump = clamp(key_jump,0,1)
key_jump_pressed = keyboard_check_pressed(vk_space) || (_pad != -1 && gamepad_button_check_pressed(_pad, gp_face1));
/*限制范围*/key_jump_pressed = clamp(key_jump_pressed,0,1)
key_atk = keyboard_check(vk_rshift) || (_pad != -1 && gamepad_button_check(_pad, gp_face3));
key_dash = keyboard_check_pressed(ord("Q")) || keyboard_check_pressed(vk_control) || (_pad != -1 && gamepad_button_check_pressed(_pad, gp_shoulderrb));
//跳跃按键缓冲
if (key_jump_pressed) {
jumpKeyBufferTimer = bufferTime
}
if (jumpKeyBufferTimer > 0) {
jumpKeyBuffered = 1
jumpKeyBufferTimer -= 1
} else {
jumpKeyBuffered = 0
}
if can_move {
moveDir = key_right - key_left;
xspd = moveDir * moveSpd;
var _subPixel = 0.5;
if (place_meeting(x + xspd, y, oWall)) {
if (xspd != 0) {
var _pixelCheck = _subPixel * sign(xspd);
while (!place_meeting(x + _pixelCheck, y, oWall)) {
x += _pixelCheck;
}
}
xspd = 0;
}
x += xspd;
/////////////////////////////////////////
// 使用缓冲跳跃检查进行跳跃
if jumpKeyBuffered && jumpCount < jumpMax{
jumpKeyBuffered = false; // 跳跃成功后重置缓冲
jumpKeyBufferTimer = 0;
jumpCount++;
//设置跳跃保持计时器
jumpHoldTimer = jumpHoldFrames
}
//中断跳跃
if !key_jump{jumpHoldTimer=0}
//根据计时器/按住按键进行跳跃
if jumpHoldTimer > 0{
yspd = jspd
jumpHoldTimer--
}
//////////////////////////////////////////////////////
yspd += grav;
if onGround{jumpCount = 0}
if (yspd > termVel) { yspd = termVel; }
// 碰撞检测
if (place_meeting(x, y + yspd, oWall)) {
if (yspd != 0) {
var _pixelCheck = _subPixel * sign(yspd);
while (!place_meeting(x, y + _pixelCheck, oWall)) {
y += _pixelCheck;
}
}
yspd = 0;
}
//判断玩家是否在地面上
if yspd >= 0 && place_meeting(x,y+1,oWall){onGround = true} else {onGround = false}
y += yspd;
//////////////////////////////////
if key_atk{
//攻击代码在此
}
}
}
评论 (0)