problema con collisioni, aiuto

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
zampa
Newbie
Messaggi: 1
Iscritto il: 27/07/2017, 16:03
Uso: GM:Studio 2
Contatta:

problema con collisioni, aiuto

Messaggio da zampa »

//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

Avatar utente
Alv
Membro
Messaggi: 133
Iscritto il: 14/11/2014, 22:33
Specialità: Programmazione
Uso: GM:Studio 1.4 Pro
Località: Sicilia
Contatta:

Re: problema con collisioni, aiuto

Messaggio da Alv »

In genere in Game Maker per mappare le collisioni si sovrappongono alle tile degli speciali oggetti collisione, e il rilevamento delle collisioni viene fatto tramite eventi. Quindi nel giocatore dovresti mettere: evento Collision with obj_collisione -> speed=0.

Francamente non ho capito bene a cosa serve il codice che hai postato: che effetto vorresti ottenere?

Comunque sì: in teoria non ci sono vincoli alle dimensioni del giocatore o dell'oggetto collisione.

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 147 ospiti