Collisione Punto a punto

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
mirkuto
Membro
Messaggi: 176
Iscritto il: 16/10/2009, 14:29
Specialità: Alla buona
Uso: GameMaker 8
Località: Venere
Contatta:

Collisione Punto a punto

Messaggio da mirkuto »

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?
Perchè la ragione... perchè con la ragione si sopravvive a tutto... si distrugge il distrutto ricostruendo a intarsi la copia fedele dell'innamorarsi...

Immagine Immagine

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: Collisione Punto a punto

Messaggio da cp94 »

Codice: Seleziona tutto

player.x=piano.x
player.y=piano.y
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Avatar utente
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

Messaggio da mirkuto »

cp94 ha scritto:

Codice: Seleziona tutto

player.x=piano.x
player.y=piano.y
Devo ottenere una aggrappata
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?
Perchè la ragione... perchè con la ragione si sopravvive a tutto... si distrugge il distrutto ricostruendo a intarsi la copia fedele dell'innamorarsi...

Immagine Immagine

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Collisione Punto a punto

Messaggio da Homunculus »

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:

Codice: Seleziona tutto

if( (player.x + 26 == piano.x) && (player.y == piano.y) ) { //dove 26 é uguale alla larghezza del player
    //fai qualcosa
} 
È chiaro che se l'origine dello sprite fosse in alto a destra sarebbe ancora più semplice, ma l'idea é questa

Avatar utente
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

Messaggio da mirkuto »

Homunculus 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:

Codice: Seleziona tutto

if( (player.x + 26 == piano.x) && (player.y == piano.y) ) { //dove 26 é uguale alla larghezza del player
    //fai qualcosa
} 
È chiaro che se l'origine dello sprite fosse in alto a destra sarebbe ancora più semplice, ma l'idea é questa
Nell'Esecute a piece of code mi da qualche errore nell'espressione, ma non capissco dove
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
Perchè la ragione... perchè con la ragione si sopravvive a tutto... si distrugge il distrutto ricostruendo a intarsi la copia fedele dell'innamorarsi...

Immagine Immagine

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: Collisione Punto a punto

Messaggio da Homunculus »

Se ti da errore copia l'errore p.f

Avatar utente
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

Messaggio da mirkuto »

Avevo sbagliato una parantesi :P
Ultima modifica di mirkuto il 17/09/2011, 12:58, modificato 1 volta in totale.
Perchè la ragione... perchè con la ragione si sopravvive a tutto... si distrugge il distrutto ricostruendo a intarsi la copia fedele dell'innamorarsi...

Immagine Immagine

Avatar utente
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

Messaggio da mirkuto »

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!!!! :piagne:

anche la gravità non si annulla perchè?
Perchè la ragione... perchè con la ragione si sopravvive a tutto... si distrugge il distrutto ricostruendo a intarsi la copia fedele dell'innamorarsi...

Immagine Immagine

Avatar utente
cp94
Moderatore
Messaggi: 2789
Iscritto il: 04/07/2009, 19:18
Specialità: ddd
Località: Brescia
Contatta:

Re: Collisione Punto a punto

Messaggio da cp94 »

dov'è l'azione? non hai messo l' if davanti alla condizione...
Games you should check out
Naemo
E T U S
Overgravity
Inside the Code

Immagine

Avatar utente
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

Messaggio da BaronVsCorsar »

(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
ImmagineSchiva 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é?

Avatar utente
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

Messaggio da mirkuto »

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 &&
Perchè la ragione... perchè con la ragione si sopravvive a tutto... si distrugge il distrutto ricostruendo a intarsi la copia fedele dell'innamorarsi...

Immagine Immagine

Avatar utente
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

Messaggio da BaronVsCorsar »

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 ;)
ImmagineSchiva 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é?

Avatar utente
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

Messaggio da mirkuto »

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???
Ultima modifica di mirkuto il 21/09/2011, 13:50, modificato 1 volta in totale.
Perchè la ragione... perchè con la ragione si sopravvive a tutto... si distrugge il distrutto ricostruendo a intarsi la copia fedele dell'innamorarsi...

Immagine Immagine

Avatar utente
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

Messaggio da mirkuto »

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!!! :)
Perchè la ragione... perchè con la ragione si sopravvive a tutto... si distrugge il distrutto ricostruendo a intarsi la copia fedele dell'innamorarsi...

Immagine Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 178 ospiti