Buon giorno a tutti
Da non molto sto cercando di imparare ad usare questo fantastico programma e mi trovo di fronte ad un problema che da giorni non riesco a risolvere
In una room ho 3 oggetti :
2 istanze : obj0, 1 istanza : obj1, 1 istanza : obj 2
In sostanza la questione e' questa, obj0 ha una variabile busy = 0 ,quando obj1 collide controlla il valore della variabile busy , se = 0 non fa nulla , se = ad 1 avvia un loop di sprites. e questo funziona .....
Il problema si pone con la collisione tra obj2 ed obj0, in teoria vorrei fargli cambiare la variabile solo all'obj0 che entra in collisione ma me li cambia in automatico tutti e due .
So che basterebbe che spostassi il controllo di collisione su obj0 per farlo ma vorrei capire come funziona questa funzione ( scusate il gioco di parole ) ... mi sono un po intestardito
obj0 ha questi valori :
CREATE : image_speed = 0
busy = 0
obj1 ha questi valori :
CREATE : image_speed = 0
global.moove = 0
STEP : if global.moove = 1
{x +=2}
if place_meeting(x,y,object0)
{ instance_place(x,y,object0) }
if object0.busy == 1 && place_meeting(x,y,object0)
{ image_speed = 1 }
else
{image_speed = 0 }
MOUSE LEAVE : global.moove = 1
obj2 ha questi valori :
CREATE : global.start = 1
STEP : if global.start = 1
{y -=1}
if place_meeting(x,y,object0)
{ object0.busy =1 }
MOUSE LEAVE : global.start = 1
Dove sbaglio
Collisioni e controllo variabili
-
- Newbie
- Messaggi: 3
- Iscritto il: 30/04/2019, 6:31
- Specialità: Grafico
- Contatta:
- doom13
- Moderatore
- Messaggi: 2093
- Iscritto il: 31/08/2012, 15:40
- Specialità: Programmazione
- Uso: GM:Studio 2
- Contatta:
Re: Collisioni e controllo variabili
Ciao, quando fai object0.busy = 0 stai settando a 0 la variabile busy di tutte le istanze di object0.
Per risolvere come vorresti fare tu, devi ottenere l'id dell'istanza con cui collidi e quindi settare la variabile di quella precisa istanza.
Per farlo ti conviene sostituire place_meeting (quello che sta in step di obj2) con instance_place, il valore ritornato da questa funzione è -4 (noone) se non ha rilevato collisioni, altrimenti ritorna proprio l'id dell'istanza. Quindi ti salvi il valore ritornato, controlli che non sia uguale a -4 e fai variabile_col_valore_ritornato.busy = 1.
Spero di essere stato abbastanza chiaro, se hai altri dubbi ovviamente scrivi qua oppure fai un salto sul discord che è anche più immediato
Per risolvere come vorresti fare tu, devi ottenere l'id dell'istanza con cui collidi e quindi settare la variabile di quella precisa istanza.
Per farlo ti conviene sostituire place_meeting (quello che sta in step di obj2) con instance_place, il valore ritornato da questa funzione è -4 (noone) se non ha rilevato collisioni, altrimenti ritorna proprio l'id dell'istanza. Quindi ti salvi il valore ritornato, controlli che non sia uguale a -4 e fai variabile_col_valore_ritornato.busy = 1.
Spero di essere stato abbastanza chiaro, se hai altri dubbi ovviamente scrivi qua oppure fai un salto sul discord che è anche più immediato
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 75 ospiti