Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- //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;
- }
- }
- }
Advertisement