Schtipadoo
Member
the ones not tagged with optional i can do so myself
i would apprecieate all help of any kinds
i wanna make a game about skating, the style of movement is gonna be similar to the 2d sonic games
heres my character code
Code:
///create event
//visual variables
draw_xscale = 1;
draw_yscale = 1;
img_speed = 0.25;
img_angle = 0;
//???
sprite_bbox_top = sprite_get_bbox_top(mask_index) - sprite_get_yoffset(mask_index);
sprite_bbox_bottom = sprite_get_bbox_bottom(mask_index) - sprite_get_yoffset(mask_index);
sprite_bbox_right = sprite_get_bbox_right(mask_index) - sprite_get_xoffset(mask_index);
sprite_bbox_left = sprite_get_bbox_left(mask_index) - sprite_get_xoffset(mask_index);
//normal variables
grav = 0.25;
spd = 7;
jspd = 7;
hspd = 0;
hspd_dir = 1;
vspd = 0
fric = 0.25;
GML:
/// step event
left_key = keyboard_check(ord("A"));
right_key = keyboard_check(ord("D"));
down_key = keyboard_check(ord("S"));
up_key = keyboard_check(ord("W"));
jump_key = keyboard_check_pressed(vk_space);
jump_key_held = keyboard_check(vk_space);
//rules
floored = place_meeting (x,y+1,wall) || place_meeting(x,y+1,slopes);
moving = (left_key || right_key);
movement = hspd != 0;
falling = vspd > 0;
image_yscale = 1;
//jump
if jump_key && floored{
vspd = -jspd;
}else{
//gravity
if (!floored) && vspd >= 0 {
vspd += grav;
}
if (!jump_key_held && vspd < -3) {
vspd = -3;
}
}
if floored{
//right
if right_key {
if (hspd < spd) {
hspd += fric;
} else {
hspd -= fric;
}
}
//left
if left_key {
if (hspd > -spd) {
hspd -= fric;
} else {
hspd += fric;
}
}
}
//check for no movement
if !moving && floored || (left_key && right_key) {
if (hspd != 0) {
if (hspd < 0) {
hspd += fric;
}else{
hspd -= fric
}
}
}
//Horizontal collisions
if place_meeting(x+hspd, y, wall) {
while !place_meeting (x+sign(hspd), y, wall) {
x+=sign(hspd)
}
hspd = 0;
}
//move x
x+=hspd
//move y
y+=vspd
//snap vertically
if place_meeting(x,y,wall) {
var walll = instance_place(x,y ,wall );
if vspd > 0 { //top
y = (walll.bbox_top-1)-sprite_bbox_bottom;
} else if vspd < 0 { //bottom
y = (walll.bbox_bottom+1)-sprite_bbox_top;
}
vspd = 0;
}
Last edited: