Aiuto con un attacco elettrico
- MagicFool64
- Membro
- Messaggi: 77
- Iscritto il: 17/12/2018, 22:26
- Uso: GM:Studio 1.4 Pro
- Contatta:
Aiuto con un attacco elettrico
Avete presente quando nei giochi c'è l'incantesimo elettrico? In pratica tu colpisci un nemico con un tuono, ma poi viene creata una catena che colpisce uno o altri due nemici aggiuntivi. So che sto chiedendo troppo, ma la cosa è un pò diversa: invece di creare una catena, vorrei fare un proiettile che dopo aver colpito un nemico passa a quello più vicino. Ma sparisce dopo aver colpito 3 nemici o quando non c'è nessuno vicino. Qualcuno mi può aiutare?
L'ignoranza è la via per l'autodistruzione
Re: Aiuto con un attacco elettrico
hai diverse opzioni:
- array di 2 elementi inizialmente vuoto
- lista (in gamemaker ds_list, è il metodo migliore se vuoi fare un sistema di powerup che aumenta il numero di nemici colpiti in catena)
- 2 variabili se non sai usare gli array, piu' limitato ma funziona.
- Il proiettile elettrico viene sparato e quindi istanziato
Comportamento del proiettile (traducilo in codice):
- Questo colpisce il primo nemico, aggiungi quel nemico alla lista dei nemici colpiti.
- con un ciclo, scorri tutti i nemici e trovi il piu' vicino, escludendo quelli che sono in lista
- imposti come nuovo target del proiettile il nuovo nemico
- decrementi la vita del proiettile di 1
- se la vita del proiettile è 0, lo distruggi
Tiz
- array di 2 elementi inizialmente vuoto
- lista (in gamemaker ds_list, è il metodo migliore se vuoi fare un sistema di powerup che aumenta il numero di nemici colpiti in catena)
- 2 variabili se non sai usare gli array, piu' limitato ma funziona.
- Il proiettile elettrico viene sparato e quindi istanziato
Comportamento del proiettile (traducilo in codice):
- Questo colpisce il primo nemico, aggiungi quel nemico alla lista dei nemici colpiti.
- con un ciclo, scorri tutti i nemici e trovi il piu' vicino, escludendo quelli che sono in lista
- imposti come nuovo target del proiettile il nuovo nemico
- decrementi la vita del proiettile di 1
- se la vita del proiettile è 0, lo distruggi
Tiz
Brutto! ★☆☆☆☆
- MagicFool64
- Membro
- Messaggi: 77
- Iscritto il: 17/12/2018, 22:26
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: Aiuto con un attacco elettrico
Quindi una cosa tipo questa?
list = ds_list_create();
ds_list_add(nemico, 2);
list = ds_list_create();
ds_list_add(nemico, 2);
L'ignoranza è la via per l'autodistruzione
- Vallo92
- GMI Advanced
- Messaggi: 1508
- Iscritto il: 15/07/2011, 20:26
- Specialità: Grafico
- Uso: GM:Studio 2
- Contatta:
Re: Aiuto con un attacco elettrico
La lista la devi creare una volta soltanto (magari la crei all'interno dell'instanza del proiettile, e quindi la inizializzi nel Create Event del proiettile).
ds_list_add non funziona esattamente così. Ti sei dato un occhiata alla pagina del manuale? Nel tuo caso dovrebbe essere una cosa tipo "ds_list_add(list, nemico);".
Comunque prova a buttare giuù il codice seguendo la logica che ti ha suggerito Tiz, così poi possiamo vedere insieme cosa non torna!
ds_list_add non funziona esattamente così. Ti sei dato un occhiata alla pagina del manuale? Nel tuo caso dovrebbe essere una cosa tipo "ds_list_add(list, nemico);".
Comunque prova a buttare giuù il codice seguendo la logica che ti ha suggerito Tiz, così poi possiamo vedere insieme cosa non torna!

-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si
- MagicFool64
- Membro
- Messaggi: 77
- Iscritto il: 17/12/2018, 22:26
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: Aiuto con un attacco elettrico
Ho messo "ds_list_add(list, nemico);" nel Create Event, poi cosa devo scrivere? Mi dà un errore quando parte il gioco. Non sò cos'altro scrivere, non sono molto pratico. Scusate, abbiate un po di pazienza
L'ignoranza è la via per l'autodistruzione
Re: Aiuto con un attacco elettrico
MagicFool, non è questo lo spirito giusto per imparare a programmare ovvero "buttando codici" negli eventi.
Prova a tradurre il ragionamento che hai fatto (giustissimo) in codice, alla fine si tratta solamente di dare a gamemaker una serie di istruzioni da eseguire in sequenza.
nel nostro ragionamento non c'era "aggiungi alla lista il nemico alla creazione del proiettile" per questo non funziona:
1) la lista non esiste
2) la variabile "nemico" non esiste in quel momento o comunque non ha significato
Prova a tradurre il ragionamento che hai fatto (giustissimo) in codice, alla fine si tratta solamente di dare a gamemaker una serie di istruzioni da eseguire in sequenza.
nel nostro ragionamento non c'era "aggiungi alla lista il nemico alla creazione del proiettile" per questo non funziona:
1) la lista non esiste
2) la variabile "nemico" non esiste in quel momento o comunque non ha significato
Brutto! ★☆☆☆☆
- MagicFool64
- Membro
- Messaggi: 77
- Iscritto il: 17/12/2018, 22:26
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: Aiuto con un attacco elettrico
Scusami, il fatto è che sto imparando questi nuovi script da pocoGMI ha scritto:MagicFool, non è questo lo spirito giusto per imparare a programmare ovvero "buttando codici" negli eventi.
Prova a tradurre il ragionamento che hai fatto (giustissimo) in codice, alla fine si tratta solamente di dare a gamemaker una serie di istruzioni da eseguire in sequenza.
nel nostro ragionamento non c'era "aggiungi alla lista il nemico alla creazione del proiettile" per questo non funziona:
1) la lista non esiste
2) la variabile "nemico" non esiste in quel momento o comunque non ha significato

L'ignoranza è la via per l'autodistruzione
- Vallo92
- GMI Advanced
- Messaggi: 1508
- Iscritto il: 15/07/2011, 20:26
- Specialità: Grafico
- Uso: GM:Studio 2
- Contatta:
Re: Aiuto con un attacco elettrico
Magic quello che ti avevo scritto io era solo un esempio. Non era una parte di codice da copiare e incollare all’interno di un evento.
Come ti ho già scritto, proviamo a seguire il ragionamento suddiviso in passaggi che ti ha scritto Tiz, e vediamo di tirarne fuori un codice che funzioni.
La prima parte è “Il proiettile viene creato e instanziato e creiamo una ds_list per tenere traccia dei nemici che andrà a colpire”. Nel tuo caso, se hai già un codice che ti instanzia un proiettile, ti basterà aggiungere la creazione di una ds_list all’interno di esso.
Cerca nel manuale la parte dedicata alle ds_list, e leggi il funzionamento (per questo nostro primo caso) di ds_list_create.
Posta il codice che hai scritto qui, e vediamo di capirlo e eventualmente correggerlo, dopodiché passeremo al passaggio successivo.
Come ti ho già scritto, proviamo a seguire il ragionamento suddiviso in passaggi che ti ha scritto Tiz, e vediamo di tirarne fuori un codice che funzioni.
La prima parte è “Il proiettile viene creato e instanziato e creiamo una ds_list per tenere traccia dei nemici che andrà a colpire”. Nel tuo caso, se hai già un codice che ti instanzia un proiettile, ti basterà aggiungere la creazione di una ds_list all’interno di esso.
Cerca nel manuale la parte dedicata alle ds_list, e leggi il funzionamento (per questo nostro primo caso) di ds_list_create.
Posta il codice che hai scritto qui, e vediamo di capirlo e eventualmente correggerlo, dopodiché passeremo al passaggio successivo.

-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si
- MagicFool64
- Membro
- Messaggi: 77
- Iscritto il: 17/12/2018, 22:26
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: Aiuto con un attacco elettrico
Quando scrivo
E metto lo script Step Toward per il seguire il bersaglio, invece il proiettile lo evita e va in alto a sinistra. Per il resto penso di aver capito
Per quando tocca il nemico ho messo questo script
Ho letto il manuale, ma essendo in inglese alcune cose non le ho capite bene
Codice: Seleziona tutto
bersagli = ds_list_create();
ds_list_add(bersagli, "obj_bersaglio");
//Durante il test chiamo "bersaglio" il nemico
Per quando tocca il nemico ho messo questo script
Codice: Seleziona tutto
ds_list_add(bersagli, "obj_bersaglio");
move_towards_point( obj_bersaglio, obj_bersaglio, 20 );
L'ignoranza è la via per l'autodistruzione
- Vallo92
- GMI Advanced
- Messaggi: 1508
- Iscritto il: 15/07/2011, 20:26
- Specialità: Grafico
- Uso: GM:Studio 2
- Contatta:
Re: Aiuto con un attacco elettrico
Fa attenzione a due cose:
- Se scrivi "ds_list_add(bersagli, "obj_bersaglio");" stai aggiungendo alla lista una stringa, cioè "obj_bersaglio". Nel tuo caso non hai bisogno di questo, ma bensì di qualcosa che identifichi il preciso nemico che il proiettile ha appena colpito.
- Penso che non hai letto attentamente come funziona move_towards_point (Clicca sul nome che ti porta alla pagina del manuale). La funzione richiede 3 argomenti: le posizione x e la posizione y di dove si deve muovere l'instanza, e la velocità con cui si deve muovere. Nel tuo codice hai inserito due oggetti, e il valore della velocità (quest'ultimo valore è l'unico corretto). In fondo alla descrizione della funzione, sono praticamente sempre presenti, degli esempi molto semplici. Dai un occhiata anche a quello, vedrai che ti aiuterà a chiarire il funzionamento della funzione.
- Se scrivi "ds_list_add(bersagli, "obj_bersaglio");" stai aggiungendo alla lista una stringa, cioè "obj_bersaglio". Nel tuo caso non hai bisogno di questo, ma bensì di qualcosa che identifichi il preciso nemico che il proiettile ha appena colpito.
- Penso che non hai letto attentamente come funziona move_towards_point (Clicca sul nome che ti porta alla pagina del manuale). La funzione richiede 3 argomenti: le posizione x e la posizione y di dove si deve muovere l'instanza, e la velocità con cui si deve muovere. Nel tuo codice hai inserito due oggetti, e il valore della velocità (quest'ultimo valore è l'unico corretto). In fondo alla descrizione della funzione, sono praticamente sempre presenti, degli esempi molto semplici. Dai un occhiata anche a quello, vedrai che ti aiuterà a chiarire il funzionamento della funzione.

-Questi occhiali da sole le stanno benissimo. Vuole provarli con le lenti più scure?
- Si vede che le sto guardando le tette?
- Si
- Allora si
- MagicFool64
- Membro
- Messaggi: 77
- Iscritto il: 17/12/2018, 22:26
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: Aiuto con un attacco elettrico
Okay, grazieVallo92 ha scritto:Fa attenzione a due cose:
- Se scrivi "ds_list_add(bersagli, "obj_bersaglio");" stai aggiungendo alla lista una stringa, cioè "obj_bersaglio". Nel tuo caso non hai bisogno di questo, ma bensì di qualcosa che identifichi il preciso nemico che il proiettile ha appena colpito.
- Penso che non hai letto attentamente come funziona move_towards_point (Clicca sul nome che ti porta alla pagina del manuale). La funzione richiede 3 argomenti: le posizione x e la posizione y di dove si deve muovere l'instanza, e la velocità con cui si deve muovere. Nel tuo codice hai inserito due oggetti, e il valore della velocità (quest'ultimo valore è l'unico corretto). In fondo alla descrizione della funzione, sono praticamente sempre presenti, degli esempi molto semplici. Dai un occhiata anche a quello, vedrai che ti aiuterà a chiarire il funzionamento della funzione.
L'ignoranza è la via per l'autodistruzione
Re: Aiuto con un attacco elettrico
link del manuale in italiano: https://gmitalia.altervista.org/manuale_GM81/
le liste si trovano sotto la voce "strutture dati"
https://gmitalia.altervista.org/manuale ... lists.html
le liste si trovano sotto la voce "strutture dati"
https://gmitalia.altervista.org/manuale ... lists.html
Brutto! ★☆☆☆☆
- MagicFool64
- Membro
- Messaggi: 77
- Iscritto il: 17/12/2018, 22:26
- Uso: GM:Studio 1.4 Pro
- Contatta:
Re: Aiuto con un attacco elettrico
PefettoGMI ha scritto:link del manuale in italiano: https://gmitalia.altervista.org/manuale_GM81/
le liste si trovano sotto la voce "strutture dati"
https://gmitalia.altervista.org/manuale ... lists.html
L'ignoranza è la via per l'autodistruzione
Chi c’è in linea
Visitano il forum: Nessuno e 23 ospiti