//create
var layerID = layer_get_id("Tiles_1");
tileID= layer_tilemap_get_id(layerID);
left = sprite_get_bbox_left(sprite_index)- sprite_get_xoffset(sprite_index);
right = sprite_get_bbox_right(sprite_index)- sprite_get_xoffset(sprite_index);
top = sprite_get_bbox_top(sprite_index)- sprite_get_yoffset(sprite_index);
bottom = sprite_get_bbox_bottom(sprite_index)- sprite_get_yoffset(sprite_index);
//step
if (xmove <0){
var t1 = tilemap_get_at_pixel(tileID, bbox_left, bbox_top) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tileID, bbox_left, bbox_bottom) & tile_index_mask;
if ( t1 !=0 || t2 !=0) {
x = (( bbox_left + 50) & ~49) - left;
}
}
if (xmove >0){
var t1 = tilemap_get_at_pixel(tileID, bbox_right, bbox_top) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tileID, bbox_right, bbox_bottom) & tile_index_mask;
if ( t1 !=0 || t2 !=0) {
x = (( bbox_right & ~49)-1) - right;
}
}
if (ymove <0){
var t1 = tilemap_get_at_pixel(tileID, bbox_right, bbox_top) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tileID, bbox_left, bbox_top) & tile_index_mask;
if ( t1 !=0 || t2 !=0) {
y = (( bbox_top + 50) & ~49) - top;
}
}
if (ymove >0){
var t1 = tilemap_get_at_pixel(tileID, bbox_right, bbox_bottom) & tile_index_mask;
var t2 = tilemap_get_at_pixel(tileID, bbox_left, bbox_bottom) & tile_index_mask;
if ( t1 !=0 || t2 !=0) {
y = (( bbox_bottom & ~49)-1) - bottom;
}
}
buon giorno a tutti ho riscontrato un problema stavo implementando un tile based collision ( non so come scriverlo in italiano ), lo sprite del giocatore è 50x50 ( ho controllato anche la maschera dello sprite è ed sempre 50x50 ), ho visto diversi video tutorial che usavano queste linee di codice per implementare le collisioni, il mio problema è non essendo lo sprite una potenza di 2 ( 50 ), l' oggeto (object) non segue le collisoni, a volte entra dentro il tile per poi teletrasportarsi qualche pixel più indietro, mi è possibile mantenere la grandezza dello sprite e cambiare solo il codice, cosi' che le collisioni funzionino?
grazie in anticipo