I need some help. I want my player to collide with the tiles, but when i play it, it jitters against the tiles. How to fix? Thank you!
Code:
Create
move_speed = 8;
jump_impulse = 21;
grav = 0.75;
v_speed = 0;
var l = layer_get_id("Collision");
tilemap = layer_tilemap_get_id(l);
sprite_bbox_left = sprite_get_bbox_left(sprite_index) - sprite_get_xoffset(sprite_index);
sprite_bbox_right = sprite_get_bbox_right(sprite_index) - sprite_get_xoffset(sprite_index);
sprite_bbox_bottom = sprite_get_bbox_bottom(sprite_index) - sprite_get_yoffset(sprite_index);
sprite_bbox_top = sprite_get_bbox_top(sprite_index) - sprite_get_yoffset(sprite_index);
Step
var dy = v_speed;
v_speed += grav;
y += dy;
if ( dy > 0){
var t1 = tilemap_get_at_pixel(tilemap, bbox_left, bbox_bottom) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_bottom) & tile_index_mask;
if (t1 != 0 || t2 != 0) {
y = ((bbox_bottom & ~64) - 1) - sprite_bbox_bottom;
v_speed = 0;
}
} else {
var t1 = tilemap_get_at_pixel(tilemap, bbox_left, bbox_top) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_top) & tile_index_mask;
if (t1 != 0 || t2 != 0) {
y = ((bbox_top + 64) & ~63) - sprite_bbox_top;
v_speed = 0;
}
}
x += dx;
if (dx > 0){
var t1 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_top) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_bottom) & tile_index_mask;
if (t1 != 0 || t2 != 0) {
x = ((bbox_right & ~63) - 1) - sprite_bbox_right;
v_speed = 0;
}
} else {
var t1 = tilemap_get_at_pixel(tilemap, bbox_left, bbox_top) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tilemap, bbox_left, bbox_bottom) & tile_index_mask;
if (t1 != 0 || t2 != 0) {
x = ((bbox_left + 64) & ~63) - sprite_bbox_left;
v_speed = 0;
}
}
Code:
Create
move_speed = 8;
jump_impulse = 21;
grav = 0.75;
v_speed = 0;
var l = layer_get_id("Collision");
tilemap = layer_tilemap_get_id(l);
sprite_bbox_left = sprite_get_bbox_left(sprite_index) - sprite_get_xoffset(sprite_index);
sprite_bbox_right = sprite_get_bbox_right(sprite_index) - sprite_get_xoffset(sprite_index);
sprite_bbox_bottom = sprite_get_bbox_bottom(sprite_index) - sprite_get_yoffset(sprite_index);
sprite_bbox_top = sprite_get_bbox_top(sprite_index) - sprite_get_yoffset(sprite_index);
Step
var dy = v_speed;
v_speed += grav;
y += dy;
if ( dy > 0){
var t1 = tilemap_get_at_pixel(tilemap, bbox_left, bbox_bottom) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_bottom) & tile_index_mask;
if (t1 != 0 || t2 != 0) {
y = ((bbox_bottom & ~64) - 1) - sprite_bbox_bottom;
v_speed = 0;
}
} else {
var t1 = tilemap_get_at_pixel(tilemap, bbox_left, bbox_top) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_top) & tile_index_mask;
if (t1 != 0 || t2 != 0) {
y = ((bbox_top + 64) & ~63) - sprite_bbox_top;
v_speed = 0;
}
}
x += dx;
if (dx > 0){
var t1 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_top) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tilemap, bbox_right, bbox_bottom) & tile_index_mask;
if (t1 != 0 || t2 != 0) {
x = ((bbox_right & ~63) - 1) - sprite_bbox_right;
v_speed = 0;
}
} else {
var t1 = tilemap_get_at_pixel(tilemap, bbox_left, bbox_top) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tilemap, bbox_left, bbox_bottom) & tile_index_mask;
if (t1 != 0 || t2 != 0) {
x = ((bbox_left + 64) & ~63) - sprite_bbox_left;
v_speed = 0;
}
}