Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /// @description Movement code
- //Inputs
- keyMoveRight = keyboard_check_direct(vk_right);
- keyMoveLeft = -keyboard_check_direct(vk_left);
- keyJump = keyboard_check_pressed(ord("Z"));
- keyJumpHold = keyboard_check_direct(ord("Z"));
- //Direction and speed:
- move = keyMoveRight + keyMoveLeft;
- hsp = move * moveSpeed;
- //Limit fallspeed:
- if (vsp >= maxFallSpeed){
- vsp = maxFallSpeed;
- }
- else{
- vsp += grav;
- }
- //Jumping
- if place_meeting(x, y + 1, objBlock) && keyJump{
- vsp += jumpSpeed;
- }
- if place_meeting(x, y + 1, objPlatform) && keyJump{
- vsp += jumpSpeed;
- }
- //Jump boosting
- if keyJumpHold && vsp < 0{
- vsp += jumpHoldBoost;
- }
- //Horizontal collision
- if (place_meeting(x + hsp,y,objBlock)){
- while (!place_meeting(x + sign(hsp),y,objBlock)){
- x += sign(hsp);
- }
- hsp = 0;
- }
- //Vertical collision
- if (place_meeting(x ,y + vsp,objBlock)){
- while (!place_meeting(x,y + sign(vsp),objBlock)){
- y += sign(vsp);
- }
- vsp = 0;
- }
- //Diagonal collision
- if (place_meeting(x + hsp, y + vsp, objBlock)){
- while(!place_meeting(x + sign(hsp), y + sign(vsp), objBlock)){
- x += sign(hsp);
- y += sign(vsp);
- }
- hsp = 0;
- vsp = 0;
- }
- //Move object
- if !moveLock{
- x += hsp;
- }
- y += vsp;
- ///Shooting
- keyShoot = keyboard_check_pressed(ord("X"));
- var shootDir = 0;
- //Get last moved direction:
- if !moveLock{
- if -keyMoveLeft{
- lastMove = -1;
- }
- else if keyMoveRight{
- lastMove = 1;
- }
- }
- shootDir = scrGetShootDirection();
- if keyShoot scrCreateBullet(x, y, shootDir);
- ///Deflecting
- var keyDeflectCharge = keyboard_check_direct(ord("C"));
- var keyDeflect = keyboard_check_released(ord("C"));
- //Create deflect hitbox:
- var deflectHitboxWidth = 42;
- //x1
- deflectHitbox[0] = x + (10 * lastMove);
- //y1
- deflectHitbox[1] = y - 18;
- //x2
- deflectHitbox[2] = x + ((10 + deflectHitboxWidth) * lastMove);
- //y2
- deflectHitbox[3] = (y - 18) + sprite_height;
- //Charge deflect:
- if keyDeflectCharge{
- moveLock = true;
- deflectCharge ++;
- }
- //Swing for deflects:
- if keyDeflect{
- with(collision_rectangle(deflectHitbox[0], deflectHitbox[1], deflectHitbox[2], deflectHitbox[3], objDeflectable, true, true)){
- scrDeflect();
- }
- with(collision_rectangle(deflectHitbox[0], deflectHitbox[1], deflectHitbox[2], deflectHitbox[3], objEnemyProjectile, true, true)){
- scrDeflect();
- }
- moveLock = false;
- deflectCharge = 0;
- }
- //Cap power
- if deflectCharge > deflectChargeMax{
- deflectCharge = deflectChargeMax;
- }
- ///Animation handling
- //Direction
- image_xscale = lastMove;
- //Running
- if move != 0{
- sprite_index = sprPlayerRunning;
- }
- //Idle
- else{
- global.jumping = false;
- sprite_index = sprIdle;
- }
- //Jumping:
- if vsp < 0{
- global.jumping = true;
- sprite_index = sprJump;
- }
- //Falling
- //Deflect charge:
- if keyDeflectCharge{
- sprite_index = sprChargeDeflect;
- }
- //Allow passage through platform
- //Vertical
- if (place_meeting(x ,y + vsp,objPlatform)){
- while (!place_meeting(x,y + sign(vsp),objPlatform)){
- y += sign(vsp);
- }
- vsp = 0;
- }
- //Diagonal
- if (place_meeting(x + hsp, y + vsp, objPlatform)){
- while(!place_meeting(x + sign(hsp), y + sign(vsp), objPlatform)){
- x += sign(hsp);
- y += sign(vsp);
- }
- hsp = 0;
- vsp = 0;
- }
- //Horizontal
- if (place_meeting(x + hsp,y,objPlatform)){
- while (!place_meeting(x + sign(hsp),y,objPlatform)){
- x += sign(hsp);
- }
- hsp = 0;
- }
Add Comment
Please, Sign In to add comment