Aiuto con un attacco elettrico

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Aiuto con un attacco elettrico

Messaggio da MagicFool64 »

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

Avatar utente
GMI
Admin
Messaggi: 70
Iscritto il: 29/07/2013, 13:28
Contatta:

Re: Aiuto con un attacco elettrico

Messaggio da GMI »

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
Brutto! ★☆☆☆☆

Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Aiuto con un attacco elettrico

Messaggio da MagicFool64 »

Quindi una cosa tipo questa?

list = ds_list_create();
ds_list_add(nemico, 2);
L'ignoranza è la via per l'autodistruzione

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

Messaggio da Vallo92 »

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! ;)
-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

Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Aiuto con un attacco elettrico

Messaggio da MagicFool64 »

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

Avatar utente
GMI
Admin
Messaggi: 70
Iscritto il: 29/07/2013, 13:28
Contatta:

Re: Aiuto con un attacco elettrico

Messaggio da GMI »

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
Brutto! ★☆☆☆☆

Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Aiuto con un attacco elettrico

Messaggio da MagicFool64 »

GMI 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
Scusami, il fatto è che sto imparando questi nuovi script da poco :(
L'ignoranza è la via per l'autodistruzione

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

Messaggio da Vallo92 »

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. ;)
-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

Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Aiuto con un attacco elettrico

Messaggio da MagicFool64 »

Quando scrivo

Codice: Seleziona tutto

bersagli = ds_list_create();
ds_list_add(bersagli, "obj_bersaglio");
//Durante il test chiamo "bersaglio" il nemico
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

Codice: Seleziona tutto

ds_list_add(bersagli, "obj_bersaglio");
move_towards_point( obj_bersaglio, obj_bersaglio, 20 );
Ho letto il manuale, ma essendo in inglese alcune cose non le ho capite bene
L'ignoranza è la via per l'autodistruzione

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

Messaggio da Vallo92 »

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. ;)
-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

Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Aiuto con un attacco elettrico

Messaggio da MagicFool64 »

Vallo92 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. ;)
Okay, grazie
L'ignoranza è la via per l'autodistruzione

Avatar utente
GMI
Admin
Messaggi: 70
Iscritto il: 29/07/2013, 13:28
Contatta:

Re: Aiuto con un attacco elettrico

Messaggio da GMI »

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
Brutto! ★☆☆☆☆

Avatar utente
MagicFool64
Membro
Messaggi: 77
Iscritto il: 17/12/2018, 22:26
Uso: GM:Studio 1.4 Pro
Contatta:

Re: Aiuto con un attacco elettrico

Messaggio da MagicFool64 »

GMI 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
Pefetto
L'ignoranza è la via per l'autodistruzione

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 26 ospiti