COLLISIONE TRA PLAYER E NEMICO

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

COLLISIONE TRA PLAYER E NEMICO

Messaggio da mirkuto »

:confuso: Vorrei sapere come far si che il NEMICO segua il PLAYER e che non collida in un punto qualsiasi dello sprite che lo rappresenti ma che un punto del NEMICO collida con un punto del PLAYER (cioè piede piede) -o forse sarebbe meglio linee che punti- in modo da permettere che solo quando si incontrino il NEMICO possa fare le sue azioni... perchè se sopra al piede deve passare dietro e se sotto al piede deve passare davanti... La profondita già è sistemata con il comando depth... vorrei solo capire come fare la collisione... Sapete come??? (Il gioco è simile a golden axe... per farvi un'idea)

Ecco un link dell'immagine:
http://img389.imageshack.us/img389/5792/xxxm.png

Il personaggio può muoversi anche sopra e sotto ecco perchè è necessario che non collida in un punto qualsiasi dello sprites ma che passi dietro e avanti, ma questo è una cosa gia risolta... il problema è relativo solo alla collisione
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
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

Re: COLLISIONE TRA PLAYER E NEMICO

Messaggio da jumoonp »

mirkuto ha scritto::confuso: Vorrei sapere come far si che il NEMICO segua il PLAYER e che non collida in un punto qualsiasi dello sprite che lo rappresenti ma che un punto del NEMICO collida con un punto del PLAYER (cioè piede piede) -o forse sarebbe meglio linee che punti- in modo da permettere che solo quando si incontrino il NEMICO possa fare le sue azioni... perchè se sopra al piede deve passare dietro e se sotto al piede deve passare davanti... La profondita già è sistemata con il comando depth... vorrei solo capire come fare la collisione... Sapete come??? (Il gioco è simile a golden axe... per farvi un'idea)

Ecco un link dell'immagine:
http://img389.imageshack.us/img389/5792/xxxm.png

Il personaggio può muoversi anche sopra e sotto ecco perchè è necessario che non collida in un punto qualsiasi dello sprites ma che passi dietro e avanti, ma questo è una cosa gia risolta... il problema è relativo solo alla collisione

Con una semplice variabile nell'evento collision....
prima di tutto devi settare una variabile aa=0 sul create event...poi sullo step event metti la condizione, cioè se nemico.y=player.y(altezza del piede sullo stesso piano, ma naturalmente se le dimensioni degli sprites coincidono, altrimenti devi fare y+qualcosa)
aa=1....

poi sull'evento collision , se la variabile aa =1, fai qualcosa, altrimenti non succede nulla....
Spoiler
Gabriele Dell'Otto e Lee bermejo

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 TRA PLAYER E NEMICO

Messaggio da mirkuto »

Grazie molte... mi hai illuminato proverò subito a fare come hai detto... :cappa:
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 TRA PLAYER E NEMICO

Messaggio da mirkuto »

Vorrei sapere un dettaglio... Ma quando scrivo nemico.y=player.y devo scrivere (nome oggetto).y proprio in quel modo... se il nome dell'oggetto ha spazi fa differenza??? tipo: minotauro cammina sinistra.y=player.y devo scriverlo diversamente perchè mi da errore
...
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 TRA PLAYER E NEMICO

Messaggio da Homunculus »

Ti sconsiglio di usare spazi per i nomi degli oggetti proprio per questo motivo, poi nel codice é un casino. Io di solito uso _ per separare le parole, tipo: mostro_sinistra, personaggio_2, ecc...

Avatar utente
mirkuto
Membro
Messaggi: 176
Iscritto il: 16/10/2009, 14:29
Specialità: Alla buona
Uso: GameMaker 8
Località: Venere
Contatta:

Re: COLLISIONE TRA PLAYER E NEMICO

Messaggio da mirkuto »

grazie mille... avevo questa sensazione... dovrò rinominare tutto però basta che ho capito!!! :)
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 TRA PLAYER E NEMICO

Messaggio da mirkuto »

:piagne: Cavolo mi da ancora errore mi dice che non conosce la variabile .y ...spiegami in maniera precisa come scrivere... a set variabile... ci sono due campi variable.... e value...
In if a variable has a value c'e sempre variable e value e la scelta dell'operation
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
maz85
Admin
Messaggi: 8287
Iscritto il: 07/02/2004, 15:57
Specialità: Nientologo
Località: Oblio
Contatta:

Re: COLLISIONE TRA PLAYER E NEMICO

Messaggio da maz85 »

:manual:

Avatar utente
mirkuto
Membro
Messaggi: 176
Iscritto il: 16/10/2009, 14:29
Specialità: Alla buona
Uso: GameMaker 8
Località: Venere
Contatta:

Re: COLLISIONE TRA PLAYER E NEMICO

Messaggio da mirkuto »

:? Fatemi capire come si fa cavolo!!! Perchè mi da .y come variabile sconosciuta... Cosa sbaglio??? Spiegatemi passo passo in dettaglio per non sbagliare, per favore ho bisogno del vostro aiuto... :cry:
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 TRA PLAYER E NEMICO

Messaggio da Homunculus »

Ci possono essere mille motivi per cui ti esce quell'errore, non esiste un procedimento standard, in linea di principio scrivere nome_oggetto.y é giusto. O hai sbagliato a scrivere il nome dell'oggetto (ne dubito) oppure quando chiami oggetto.y non esiste nessuna istanza di quell'oggetto (probabile). Ti conviene prendere il manuale e rivedere le basi.

Avatar utente
mirkuto
Membro
Messaggi: 176
Iscritto il: 16/10/2009, 14:29
Specialità: Alla buona
Uso: GameMaker 8
Località: Venere
Contatta:

Re: COLLISIONE TRA PLAYER E NEMICO

Messaggio da mirkuto »

Correggetemi se ho sbagliato...
Ho 2 oggetti PLAYER_D e NEMICO_S

nell'oggetto NEMICO_S:
-evento "create":
---Set VAR: variable...pp value...0
-evento "step":
---If ESPRESSION is TRUE: (self) espression: NEMICO_S.y=PLAYER_D.y
------Set VAR: variable...pp value...1
-evento collision between PLAYER_D:
---If VAR Has a value: variable...pp value...1 operation...equal to
------<OPERAZIONE>

Il ragionamento mi sembra corretto non so....
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
Lord Of Destruction
Membro d'elite
Messaggi: 1161
Iscritto il: 02/06/2009, 11:48
Specialità: Grafico-Progammatore
Località: Vault 101
Contatta:

Re: COLLISIONE TRA PLAYER E NEMICO

Messaggio da Lord Of Destruction »

Non ti riconosce la variabile .y :? ?
Probabilmente hai scritto .y staccato dal nome dell'istance, da qualche parte...
(invece di "personaggio.y", "personaggio .y"...)

Avatar utente
mirkuto
Membro
Messaggi: 176
Iscritto il: 16/10/2009, 14:29
Specialità: Alla buona
Uso: GameMaker 8
Località: Venere
Contatta:

Re: COLLISIONE TRA PLAYER E NEMICO

Messaggio da mirkuto »

Magari fosse per quello... mi dice proprio che la variabile y è sconosciuta
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 TRA PLAYER E NEMICO

Messaggio da mirkuto »

riporto i messaggi principali di seguito per facilitare la comprenzione del mio problema...
mirkuto ha scritto::confuso: Vorrei sapere come far si che il NEMICO segua il PLAYER e che non collida in un punto qualsiasi dello sprite che lo rappresenti ma che un punto del NEMICO collida con un punto del PLAYER (cioè piede piede) -o forse sarebbe meglio linee che punti- in modo da permettere che solo quando si incontrino il NEMICO possa fare le sue azioni... perchè se sopra al piede deve passare dietro e se sotto al piede deve passare davanti... La profondita già è sistemata con il comando depth... vorrei solo capire come fare la collisione... Sapete come??? (Il gioco è simile a golden axe... per farvi un'idea)

Ecco un link dell'immagine:
http://img389.imageshack.us/img389/5792/xxxm.png

Il personaggio può muoversi anche sopra e sotto ecco perchè è necessario che non collida in un punto qualsiasi dello sprites ma che passi dietro e avanti, ma questo è una cosa gia risolta... il problema è relativo solo alla collisione
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 TRA PLAYER E NEMICO

Messaggio da mirkuto »

Ecco il mio tentativo
mirkuto ha scritto:Correggetemi se ho sbagliato...
Ho 2 oggetti PLAYER_D e NEMICO_S

nell'oggetto NEMICO_S:
-evento "create":
---Set VAR: variable...pp value...0
-evento "step":
---If ESPRESSION is TRUE: (self) espression: NEMICO_S.y=PLAYER_D.y
------Set VAR: variable...pp value...1
-evento collision between PLAYER_D:
---If VAR Has a value: variable...pp value...1 operation...equal to
------<OPERAZIONE>

Il ragionamento mi sembra corretto non so....
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 TRA PLAYER E NEMICO

Messaggio da Homunculus »

NEMICO_S.y=PLAYER_D.y é corretto, se i nomi degli oggetti corrispondono. Quello che volevo dire é che magari al momento in cui tu esegui questo codice non esiste nessuna istanza di PLAYER_D, e di conseguenza non esiste nessuna variabile PLAYER_D.y

Avatar utente
mirkuto
Membro
Messaggi: 176
Iscritto il: 16/10/2009, 14:29
Specialità: Alla buona
Uso: GameMaker 8
Località: Venere
Contatta:

Re: COLLISIONE TRA PLAYER E NEMICO

Messaggio da mirkuto »

Bho... forse dipende dal fatto che per il player io ho usato più oggetti... per i casi in cui sta fermo a destra - sta fermo a sinistra - si muove a destra - si muove a sinistra - si muove sotto da destra - sotto da sinistra - e sopra da destra - sopra da sinistra... ho usato ben 8 oggetti, ma necessari per determinare azioni difficili da realizzare con il semplice cambio di sprites e mi riusciva più comodo avere più oggetti
quindi.... es:
nel momento che da fermo destra premo destra distruggo l'oggetto stesso e ne ricreo un'altro con sprites cammina destra la posizione poi l'ho regolata in maniera da ottenere la giusta collocazione dell'oggetto.... ora c'è da dire che io mi muovo da una room all'altra collidendo con un muro invisibile e passando poi all'altra schermata... mentre entro nell'altra room -chiaramente con l'oggetto che cammina a destra riposizionato a sinistra (altra estremità della room) - c'è il nemico cammina sinistra che gli va incontro... ma la schermata si blocca all'istante dandomi l'errore... eppure il PLAYER_D(cioè destra) e NEMICO_S (cioè sinistra) ci sono... mi sembra di aver notato forse che capiti nel momento in cui rilascio la freccia di destra e cioè nel momento in cui si distrugge l'istanza dell'oggetto Player che cammina a destra per ottenere l'oggetto player da fermo destra.... è giusta la mia diagnosi??? Cmq detto questo allora come è possibile adattare la mia situazione in questo caso... non mi viene in mente nulla, qualche strataggemma ci sarà... (avevo pensato di inventare altre barre invisibili orizzontali poste ai piedi una con la stessa mozione del nemico e l'altra con la stessa mozione del player in maniera che collidendo le barre si generi poi l'azione del mio nemico in quella linea, solo che mi sono reso conto che le cose si complicano sempre di più) voi che dite????
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 TRA PLAYER E NEMICO

Messaggio da BaronVsCorsar »

ammetto che non ho capito molto bene la tua descrizione.

non so se la soluzione ad 8 oggetti sia davver quella corretta, anche se mi viene da pensare che ci potessero essere soluzioni migliori, diventa piuttosto difficile da gestire senza usare i parent.
tutti i controlli di collisioni potresti farle con il parent player (i cui 8 figli sono gli oggetti che hai creato) minimizzando i problemi di object non esistente (supponendo ch almeno uno degli otto object player sia sempre esistente).
L'ereditarietà semplifica molto la gestione di un caso come il tuo.
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
Lord Of Destruction
Membro d'elite
Messaggi: 1161
Iscritto il: 02/06/2009, 11:48
Specialità: Grafico-Progammatore
Località: Vault 101
Contatta:

Re: COLLISIONE TRA PLAYER E NEMICO

Messaggio da Lord Of Destruction »

Ma perchè crei più instance per lo stesso oggetto? Questo fà pesare di più (anche se leggermente) il gioco, può darti dei problemi (come ad esempio devi identificare un punto del player e quando, camminando, cambia instance e si crea l'errore .-.), e altro (un personaggio solo è più comodo da gestire...).
Crea una sola instance e :banapc:. Con qualche codice te la puoi cavare ;).. Oppure, puoi creare un parent...

Avatar utente
jumoonp
GMI VIP
Messaggi: 3292
Iscritto il: 13/01/2008, 20:59
Contatta:

Re: COLLISIONE TRA PLAYER E NEMICO

Messaggio da jumoonp »

mirkuto ha scritto:Magari fosse per quello... mi dice proprio che la variabile y è sconosciuta
apparte questo, tu usi un oggetto per ogni sprites...
gli oggetti devono essere solo due:
1 player
1 nemico

se il player va a destra, devi solo cambiare la sprite/destra, non l'oggetto....metti tutti i movimenti del player in un unico gif, poi
nell'evento draw selezioni l'icona "draw sprite" e ci metti la sub-image che è relativa...
per quanto riguarda la "variabile Y"....
ti compare all'inizio del gioco?
oppure altrimenti succede che a forza di cambiare oggetto/sprite, il programma non legge nulla, perchè la room è vuota...
Spoiler
Gabriele Dell'Otto e Lee bermejo

Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 45 ospiti