direzione dei proiettili
direzione dei proiettili
sono un novellino di game maker e ho un problema che cerco di risolvere da alcuni giorni, non riuscendo proprio da solo, chiedo a voi:
sto creando un gioco in cui una navicella nello spazio deve evitare asteroidi e prendere punti, ogni volta che prende punti nascono nuovi asteroidi (non è granchè come idea, ma buona per fare un po' di palestra immagino);
visto che sono riuscito a farlo più o meno decentemente, volevo creare un'altra modalità, in cui, come nel classico gioco (di cui però non ricordo il nome preciso), all'inizio ci sono pochi grandi asteroidi che, se colpiti, si dividono in asteroidi più piccoli.
il mio problema è la direzione da dare ai proiettili, ovvero:
io ho scritto ciò nell'evento step del proiettile
speed=15;
if (keyboard_check(vk_up))
{direction=90};
if (keyboard_check(vk_down))
{direction=270};
if (keyboard_check(vk_left))
{direction=180};
if (keyboard_check(vk_right))
{direction=0};
la cosa positiva è che quando vengono sparati i proiettili vanno nella direzione che voglio, ovvero quella della nave; la cosa negativa è che quando la nave si muove cambia la direzione dei proiettili, anche quelli già sparati.
spero di essere stato chiaro e di non aver ripetuto una domanda presente altrove (ho provato a cercare ma non ho trovato nulla)
sto creando un gioco in cui una navicella nello spazio deve evitare asteroidi e prendere punti, ogni volta che prende punti nascono nuovi asteroidi (non è granchè come idea, ma buona per fare un po' di palestra immagino);
visto che sono riuscito a farlo più o meno decentemente, volevo creare un'altra modalità, in cui, come nel classico gioco (di cui però non ricordo il nome preciso), all'inizio ci sono pochi grandi asteroidi che, se colpiti, si dividono in asteroidi più piccoli.
il mio problema è la direzione da dare ai proiettili, ovvero:
io ho scritto ciò nell'evento step del proiettile
speed=15;
if (keyboard_check(vk_up))
{direction=90};
if (keyboard_check(vk_down))
{direction=270};
if (keyboard_check(vk_left))
{direction=180};
if (keyboard_check(vk_right))
{direction=0};
la cosa positiva è che quando vengono sparati i proiettili vanno nella direzione che voglio, ovvero quella della nave; la cosa negativa è che quando la nave si muove cambia la direzione dei proiettili, anche quelli già sparati.
spero di essere stato chiaro e di non aver ripetuto una domanda presente altrove (ho provato a cercare ma non ho trovato nulla)
Re: direzione dei proiettili
Il gioco da te citato si chiama "Asteroids"
Comunque, il programma sta facendo esattamente quello che gli dici.
Quindi tu in realtà vuoi che il proiettile imposti la sua direzione QUANDO VIENE CREATO...
questa frase dovrebbe farti capire che devi settare la direzione del proiettile una sola volta.
nell'evento CREATE del proiettile metti
il "punto" significa Accedere a una variabile dell'oggetto in questo caso chiamato obj_navicella...
non so come tu l'abbia chiamato.
Questo codice setterà la direzione del proiettile uguale a quella della navicella.
Comunque, il programma sta facendo esattamente quello che gli dici.
Quindi tu in realtà vuoi che il proiettile imposti la sua direzione QUANDO VIENE CREATO...
questa frase dovrebbe farti capire che devi settare la direzione del proiettile una sola volta.
nell'evento CREATE del proiettile metti
Codice: Seleziona tutto
direction=obj_navicella.direction;
il "punto" significa Accedere a una variabile dell'oggetto in questo caso chiamato obj_navicella...
non so come tu l'abbia chiamato.
Questo codice setterà la direzione del proiettile uguale a quella della navicella.
Re: direzione dei proiettili
ci avevo pensato anche io, ho riprovato adesso, ma l'errore che mi dà è che non conosce la variabile direction della nave, e in effetti io non l'ho scritta, la nave semplicemente si muove quando schiaccio una freccia, tipo nell'evento left ho messo x-=8, senza dargli nessuna direzione, se no non si ferma quando lascio la freccia sinistra..
Re: direzione dei proiettili
però ho in parte risolto scrivendo quello che ho scritto prima con i 4 if nell'evento create. l'unico problema è che ora se sto fermo spara a destra, perchè ovviamente non gli ho detto diversamente. come faccio a dirglielo?
grazie per la tua attenzione
grazie per la tua attenzione
Re: direzione dei proiettili
che versione di gm usi?apashee ha scritto:però ho in parte risolto scrivendo quello che ho scritto prima con i 4 if nell'evento create. l'unico problema è che ora se sto fermo spara a destra, perchè ovviamente non gli ho detto diversamente. come faccio a dirglielo?
grazie per la tua attenzione
direction è una variabile integrata, mi sembra strano che non la conosca...
(direction... non Direction o DiReCtIoN DirectioN et similia ...tanto per chiarire eventuali equivoci )
Re: direzione dei proiettili
8.0
sì, direction scritto direction, ma se ho capito bene, non settandola la mette = 0 e quindi verso destra (ed è infatti ciò che fanno i proiettili se faccio come dici tu)
sì, direction scritto direction, ma se ho capito bene, non settandola la mette = 0 e quindi verso destra (ed è infatti ciò che fanno i proiettili se faccio come dici tu)
Re: direzione dei proiettili
vero...apashee ha scritto:8.0
sì, direction scritto direction, ma se ho capito bene, non settandola la mette = 0 e quindi verso destra (ed è infatti ciò che fanno i proiettili se faccio come dici tu)
tu la nave coma la fai volare?
(nelle 4 direzioni?)
se sì basta che quando cambia direzione metti
Codice: Seleziona tutto
if(keyboard_check(blabla)) { direction=0; /*destra*/}
.....direction=90
..........180
........270
ecc..
Re: direzione dei proiettili
ora provo
Re: direzione dei proiettili
funge!!! grazie!
Re: direzione dei proiettili
ok, non lo farò più
volevo solo chiedere un'ultima cosa: ora tutto funziona per il verso giusto, tranne che la mia nave quando premo il tasto per sparare, spara colpi uno di fila all'altro, mentre io vorrei che tra uno e l'altro ci fosse una piccola pausa..qualcuno può darmi una mano?
volevo solo chiedere un'ultima cosa: ora tutto funziona per il verso giusto, tranne che la mia nave quando premo il tasto per sparare, spara colpi uno di fila all'altro, mentre io vorrei che tra uno e l'altro ci fosse una piccola pausa..qualcuno può darmi una mano?
Re: direzione dei proiettili
usa l'evento alarmapashee ha scritto: ok, non lo farò più
volevo solo chiedere un'ultima cosa: ora tutto funziona per il verso giusto, tranne che la mia nave quando premo il tasto per sparare, spara colpi uno di fila all'altro, mentre io vorrei che tra uno e l'altro ci fosse una piccola pausa..qualcuno può darmi una mano?
in create event metti
Codice: Seleziona tutto
alarm[0]=10 ;//10 step
dentro l'evento alarm0 metti il codice per sparare
e poi
Codice: Seleziona tutto
alarm[0]=10//10 step;
Re: direzione dei proiettili
funziona, ma se metto come tasto per sparare una lettera invece che quelli contraddistinti da vk_ la nave spara da sola e smette quando premo la lettera..
io ho scritto così:
io ho scritto così:
Codice: Seleziona tutto
if keyboard_check('A')
{instance_create(x,y,og_bullet)}
alarm [0]=5
Re: direzione dei proiettili
usaapashee ha scritto:funziona, ma se metto come tasto per sparare una lettera invece che quelli contraddistinti da vk_ la nave spara da sola e smette quando premo la lettera..
io ho scritto così:Codice: Seleziona tutto
if keyboard_check('A') {instance_create(x,y,og_bullet)} alarm [0]=5
Codice: Seleziona tutto
if(keyboard_check(ord("A")))
Re: direzione dei proiettili
Scusate, siccome io adesso mi ritrovo nella stessa situazione e voi avete già risolto mi potete inviare tutto il codice ? perfavore
Re: direzione dei proiettili
scusate ho un pronìblema con la direzione dei proiettili. Ho una sprite che usa 4 direzioni. Per far andare i proiettili in tutte le 4 direzioni che voglio io ho fatto così:
var instance_create(x,y,missile);
missile.speed = 7;
if(sprite_index = carro_sx) {missile.direction = 180;}
if(sprite_index = carro_dx) {missile.direction = 0;}
if(sprite_index = carro_dv) {missile.direction = 270;}
if(sprite_index = carro_di) {missile.direction = 90;}
solo che c'è un problema, es. se sparo un proiettile verso destra e ne sparo un altro a sinistra il proiettile che nel frattempo andava a destra cambia direzione e va a sinistra anke lui e così con tutte le direzioni. Potreste cortesemente spiegarmi qual è il problema ?
var instance_create(x,y,missile);
missile.speed = 7;
if(sprite_index = carro_sx) {missile.direction = 180;}
if(sprite_index = carro_dx) {missile.direction = 0;}
if(sprite_index = carro_dv) {missile.direction = 270;}
if(sprite_index = carro_di) {missile.direction = 90;}
solo che c'è un problema, es. se sparo un proiettile verso destra e ne sparo un altro a sinistra il proiettile che nel frattempo andava a destra cambia direzione e va a sinistra anke lui e così con tutte le direzioni. Potreste cortesemente spiegarmi qual è il problema ?
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: direzione dei proiettili
Quando fai missile.direction stai assegnando la direzione a tutte le istanze di missile.
Posta il codice della creazione dei missili.
Posta il codice della creazione dei missili.
Spoiler
"Things get hard sometimes guys... But remember, dicks get hard too, but they don't stay hard forever. Don't give up!"
Chi c’è in linea
Visitano il forum: Nessuno e 151 ospiti