Collisione Punto a punto
- mirkuto
- Membro
- Messaggi: 176
- Iscritto il: 16/10/2009, 14:29
- Specialità: Alla buona
- Uso: GameMaker 8
- Località: Venere
- Contatta:
Collisione Punto a punto
Salve vorrei dopo che è settata una variabile
far collidere il punto in alto a destra del player con il punto in alto a sinistra di un piano
il player è alto: 64 largo:26 - con origine in alto a sinistra
il piano è alto: 11 largo: 256 - con origine in alto a sinistra
come devo fare per realizzare la collisione punto a punto?
si deve utilizzare la condizione If player.y=piano.y?
Non riesco a determinare la collisione nel punto che voglio potete aiutarmi?
far collidere il punto in alto a destra del player con il punto in alto a sinistra di un piano
il player è alto: 64 largo:26 - con origine in alto a sinistra
il piano è alto: 11 largo: 256 - con origine in alto a sinistra
come devo fare per realizzare la collisione punto a punto?
si deve utilizzare la condizione If player.y=piano.y?
Non riesco a determinare la collisione nel punto che voglio potete aiutarmi?
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: Collisione Punto a punto
Codice: Seleziona tutto
player.x=piano.x
player.y=piano.y
- mirkuto
- Membro
- Messaggi: 176
- Iscritto il: 16/10/2009, 14:29
- Specialità: Alla buona
- Uso: GameMaker 8
- Località: Venere
- Contatta:
Re: Collisione Punto a punto
Devo ottenere una aggrappatacp94 ha scritto:Codice: Seleziona tutto
player.x=piano.x player.y=piano.y
Non riesco ad ottenere quello che voglio.... io devo ottenere una volta eseguito il salto VAR s=1 un cambio sprites e un arrestamento della gravità tutto questo
-nel momento in cui il punto in alto a destra del player collide con il punto in alto a sinistra del piano
Con quel codice collide in basso e in qualunque punto della maschera, mentre a me serve il punto specifico della maschera non il bordo della maschera, ma il singolo punto
Forse bisogna usare un'altro modo, forse il "se c'è un oggetto in una determinata posizione" può andare bene?
- Homunculus
- Admin
- Messaggi: 6840
- Iscritto il: 25/11/2007, 20:36
- Contatta:
Re: Collisione Punto a punto
Il punto del piano é semplice perché corrisponde all'origine, mentre al punto del player, essendo l'origine in alto a sinistra, va aggiunta la lunghezza.
Alla fine esce una cosa banale:
È chiaro che se l'origine dello sprite fosse in alto a destra sarebbe ancora più semplice, ma l'idea é questa
Alla fine esce una cosa banale:
Codice: Seleziona tutto
if( (player.x + 26 == piano.x) && (player.y == piano.y) ) { //dove 26 é uguale alla larghezza del player
//fai qualcosa
}
- mirkuto
- Membro
- Messaggi: 176
- Iscritto il: 16/10/2009, 14:29
- Specialità: Alla buona
- Uso: GameMaker 8
- Località: Venere
- Contatta:
Re: Collisione Punto a punto
Nell'Esecute a piece of code mi da qualche errore nell'espressione, ma non capissco doveHomunculus ha scritto:Il punto del piano é semplice perché corrisponde all'origine, mentre al punto del player, essendo l'origine in alto a sinistra, va aggiunta la lunghezza.
Alla fine esce una cosa banale:
È chiaro che se l'origine dello sprite fosse in alto a destra sarebbe ancora più semplice, ma l'idea é questaCodice: Seleziona tutto
if( (player.x + 26 == piano.x) && (player.y == piano.y) ) { //dove 26 é uguale alla larghezza del player //fai qualcosa }
capita nel momento che inserisco le parantesi e &&
Se lo inserisco nell'icona della question generale non dice nulla... però le mie condizioni non si verificano
- Homunculus
- Admin
- Messaggi: 6840
- Iscritto il: 25/11/2007, 20:36
- Contatta:
Re: Collisione Punto a punto
Se ti da errore copia l'errore p.f
- mirkuto
- Membro
- Messaggi: 176
- Iscritto il: 16/10/2009, 14:29
- Specialità: Alla buona
- Uso: GameMaker 8
- Località: Venere
- Contatta:
Re: Collisione Punto a punto
Avevo sbagliato una parantesi
Ultima modifica di mirkuto il 17/09/2011, 12:58, modificato 1 volta in totale.
- mirkuto
- Membro
- Messaggi: 176
- Iscritto il: 16/10/2009, 14:29
- Specialità: Alla buona
- Uso: GameMaker 8
- Località: Venere
- Contatta:
Re: Collisione Punto a punto
Ho dei problemi!!!! Non riesco a capire il perchè non avviene una particolare azione
Con il test exspression If ho definito IN STEP EVENT
{(player.x+26 > piano.x -10) && (player.x + 26 < piano.x + 10) && (player.y == piano.y)
{ l'azione: setto la gravità a 0,
la verticale speed a 0,
cambio sprites in immagine di arrampicata
}
}
l'azione però NON AVVIENE!!!!
anche la gravità non si annulla perchè?
Con il test exspression If ho definito IN STEP EVENT
{(player.x+26 > piano.x -10) && (player.x + 26 < piano.x + 10) && (player.y == piano.y)
{ l'azione: setto la gravità a 0,
la verticale speed a 0,
cambio sprites in immagine di arrampicata
}
}
l'azione però NON AVVIENE!!!!
anche la gravità non si annulla perchè?
- cp94
- Moderatore
- Messaggi: 2789
- Iscritto il: 04/07/2009, 19:18
- Specialità: ddd
- Località: Brescia
- Contatta:
Re: Collisione Punto a punto
dov'è l'azione? non hai messo l' if davanti alla condizione...
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: Collisione Punto a punto
(player.y == piano.y)
questo non sarà troppo stringente?
potrebbe essere che con speed non itnere hai
player.y= 10.0001
piano.y= 9.999998
questo non sarà troppo stringente?
potrebbe essere che con speed non itnere hai
player.y= 10.0001
piano.y= 9.999998
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- mirkuto
- Membro
- Messaggi: 176
- Iscritto il: 16/10/2009, 14:29
- Specialità: Alla buona
- Uso: GameMaker 8
- Località: Venere
- Contatta:
Re: Collisione Punto a punto
BaronVsCorsar ha scritto:(player.y == piano.y)
questo non sarà troppo stringente?
potrebbe essere che con speed non itnere hai
player.y= 10.0001
piano.y= 9.999998
quindi mi consigli di fare come per x e aggiungere un anltro &&
- BaronVsCorsar
- GMI VIP
- Messaggi: 4699
- Iscritto il: 14/02/2004, 12:05
- Specialità: Saccenza
- Uso: GameMaker 8.1
- Località: Ferrara
- Contatta:
Re: Collisione Punto a punto
POTREBBE essere un motivo. dipende da come gestisci il movimento y.
chiaro che se y puoi solo incrementarlo/decrementarlo di multipli di 1, allora il controllo dell'uguaglianza è sufficiente.
se li muovi con una speed variabile e una direzione non fissa (tipo vista dall'alto e movimento a 360°), allora l'uguaglianza può essere molto stringente.
Te ne accorgi in fretta: lancia in debug e metti i due valori di y in moniotoraggio e guarda quanto valgono
chiaro che se y puoi solo incrementarlo/decrementarlo di multipli di 1, allora il controllo dell'uguaglianza è sufficiente.
se li muovi con una speed variabile e una direzione non fissa (tipo vista dall'alto e movimento a 360°), allora l'uguaglianza può essere molto stringente.
Te ne accorgi in fretta: lancia in debug e metti i due valori di y in moniotoraggio e guarda quanto valgono
Schiva questo - http:\\baronvscorsar.altervista.org
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
by Lego: Vado in un bar e faccio "votiamo che quel tizio la in fondo venga buttato fuori", ma perché?
- mirkuto
- Membro
- Messaggi: 176
- Iscritto il: 16/10/2009, 14:29
- Specialità: Alla buona
- Uso: GameMaker 8
- Località: Venere
- Contatta:
Re: Collisione Punto a punto
per creare l'arrampicata ho dovuto cercare un trucchetto dato che non mi effettua l'espressione
e ho fatto nel seguente modo:
Ho creato una BARRA che segue il player sulla testa lunga quanto il player stesso
Ho creato due PUNTI A e B che ho posizionato rispettivamente in alto a sinistra e in alto a destra della piattaforma
Nell'evento STEP del player
Ho utilizzato if Chek object applicato sull'oggetto BARRA rispetto PUNTO_A
se accade questo si verificano le condizione dell'oggetto PLAYER
Ho notato che funziona PERO' se vado incontro al punto con velocità 3 da sinistra a destra, collidendo l'evento funziona,
se salto e questo è troppo alto o in caduta è troppo veloce l'evento non avviene,
in altri casi avviene se il punto massimo del salto avviene in prossimita del PUNTO_A
Quindi non so come fare una corretta arrampicata rimanendo nei limiti giusti senza eccessivo scostamento dell'immagine del player... Rendo noto che gli sprites non hanno la stessa dimensione ed ho usato una maskera provvisoria per l'oggetto player
Come si deve fare??? Non ci riesco Potete darmi una mano???
e ho fatto nel seguente modo:
Ho creato una BARRA che segue il player sulla testa lunga quanto il player stesso
Ho creato due PUNTI A e B che ho posizionato rispettivamente in alto a sinistra e in alto a destra della piattaforma
Nell'evento STEP del player
Ho utilizzato if Chek object applicato sull'oggetto BARRA rispetto PUNTO_A
se accade questo si verificano le condizione dell'oggetto PLAYER
Ho notato che funziona PERO' se vado incontro al punto con velocità 3 da sinistra a destra, collidendo l'evento funziona,
se salto e questo è troppo alto o in caduta è troppo veloce l'evento non avviene,
in altri casi avviene se il punto massimo del salto avviene in prossimita del PUNTO_A
Quindi non so come fare una corretta arrampicata rimanendo nei limiti giusti senza eccessivo scostamento dell'immagine del player... Rendo noto che gli sprites non hanno la stessa dimensione ed ho usato una maskera provvisoria per l'oggetto player
Come si deve fare??? Non ci riesco Potete darmi una mano???
Ultima modifica di mirkuto il 21/09/2011, 13:50, modificato 1 volta in totale.
- mirkuto
- Membro
- Messaggi: 176
- Iscritto il: 16/10/2009, 14:29
- Specialità: Alla buona
- Uso: GameMaker 8
- Località: Venere
- Contatta:
Re: Collisione Punto a punto
Ho trovato una soluzione ... i punti A e B sono eccessivamente piccoli
Ho aggiunto 2 punti uno appresso l'altro nello spigolo e ualà funziona correttamente!!!
Ho aggiunto 2 punti uno appresso l'altro nello spigolo e ualà funziona correttamente!!!
Chi c’è in linea
Visitano il forum: Nessuno e 152 ospiti