//UPDATE INPUT
input_left = keyboard_check(vk_left) or keyboard_check(ord("A"));
input_right = keyboard_check(vk_right) or keyboard_check(ord("D"));
input_up = keyboard_check(vk_up) or keyboard_check(ord("W"));
input_down = keyboard_check(vk_down) or keyboard_check(ord("S"));
input_walk = keyboard_check(vk_control) ;
input_run = keyboard_check(vk_shift);
//ALTER SPEED
if (input_walk or input_run) {
spd = abs((input_walk * w_spd) - (input_run * r_spd));
} else {
spd = n_spd;
}
//Gamepad Movement
var ix = gamepad_axis_value(input_device, gp_axislh);
var iy = gamepad_axis_value(input_device, gp_axislv);
var dx = abs(ix)*ix * spd;
var dy = abs(iy)*iy * spd;
var l = 0;
if (ix != 0 or iy != 0) {
l = sqrt(ix*ix + iy*iy);
}
//RESET MOVE VARIABLES
moveX = 0;
moveY = 0;
//INTENDED MOVEMENT
moveY = (input_down - input_up) * spd //Had a major error with this, may have to play around with it
if (moveY == 0){ moveX = (input_right - input_left) * spd; }
moveX = (input_right - input_left) * spd //This fixed the error but I'm not sure if I need to ammend it
if (moveX == 0){ moveY = (input_down - input_up) * spd; } //This might make it worse
//GET DIRECTION PLAYER IS FACING
if(moveX != 0) {
switch(sign(moveX)){
case 1: facing = dir.right; break;
case -1: facing = dir.left; break;
}
} else if(moveY != 0){
switch(sign(moveY)){
case 1: facing = dir.down; break;
case -1: facing = dir.up; break;
}
} else {
facing = -1;
}
//COLLISION CHECKS
//horizontal check
if(moveX != 0) {
var collisionH = instance_place(x+moveX, y, obj_collision);
if(collisionH != noone and collisionH.collideable){
repeat(abs(moveX)){
if(!place_meeting(x+sign(moveX), y, obj_collision)){
x += sign(moveX);
} else { break; }
}
moveX = 0;
}
}
//vertical check
if(moveY !=0) {
var collisionV = instance_place(x, y+moveY, obj_collision);
if(collisionV != noone and collisionV.collideable){
repeat(abs(moveY)){
if(!place_meeting(x, y+sign(moveY), obj_collision)){
y += sign(moveY);
} else {
break;
}
}
moveY = 0;
}
}
//APPLY MOVEMENT
x += moveX;
y += moveY;
//Objects
var inst = instance_place(x,y, obj_transitions);
if( inst !=noone and facing == inst.playerFacingBefore){
with(obj_game) {
if(!doTransition) {
spawnRoom = inst.TargetRoom;
spawnX = inst.targetX;
spawnY = inst.targetY;
spawnPlayerFacing = inst.playerFacingAfter;
doTransition = true;
}
}
}
Comments
0 B
|👍
/👎
0 B
|👍
/👎