creare oggetto in un determinato posto

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

creare oggetto in un determinato posto

Messaggio da ZerA78 »

Qual'e' la funzione che fa creare oggetti? object_add(nome oggetto)? e se li volessi creare uniti e in fila?
Immagine

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da Homunculus »

Quello che vuoi fare tu non é creare oggetti ma creare istanze di oggetti. La funzione quindi non é object_add ma instance_create.
Se vai a vedere sul manuale i parametri sono 3, le coordinate x e y (che puoi usare per creare le istanze dove preferisci) e il nome dell'oggetto

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

ok grazie! voglio creare l'area disponibile x il movimento in un gioco isometrico. tipo final fantasy tactict. capito? quindi mi servira' creare un tot di tasselli di terreno nelle vicinanze del personaggio. sto cercando di pensare a vari aspetti..ma la vedo nn facile.. :(
Immagine

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

Forse ho capito!!! devo creare una variabile x il tassello che cambia a seconda della distanza dal personaggio. al premere il tasto M se la variabile si rivela true cambai lo sprite in zona disponibile! Mi date conferma se e' una buona idea!!?? Grazie :)
Immagine

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da Homunculus »

ff tactics l'ho in mente. ma hai dimenticato di spiegare cosa vuoi fare, o lo hai spiegato un po' male...

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

voglio settare l'area disponibile per il movimento. per il momento sto settando con la pressione del tasto M(poi faro' il menu' con "Muovi", "attacca", etc) la visualizzazione del raggio d'azione. hai presente i tasselli di terreno che diventano celestini e t dicono fino a dove t puoi muovere? Ecco ;)
Immagine

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da Homunculus »

Beh penso che l'idea sia usare qualche struttura di dati tipo ds_grid o simili ma dalla tua domanda credo non sia il caso di entrare in argomenti avanzati. Sicuramente é una buona idea usare istanze per i tasselli piuttosto che tiles, ma quelli puoi metterli direttamente nella room no? Perché dovresti creare i tasselli tramite codice?

Una volta posizionati devi "solo" passare da un tassello all'altro partendo dalla posizione del giocatore ed "evidenziare" quelli in cui é possibile muoversi. Evidenziarli non é un problema, basta cambiare sprite o usare un blend, ma passare in rassegna i tasselli rischia di diventare un po' troppo complesso se sei alle prime armi.

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

No infatti. ho abbandonato l'idea di inserire i tasselli colorati come instance e cambiero' lo sprite del tassello. Al momento con la pressione del tasto M. cambiano tutti :S
Ho creato una variabile nell'istance del tassello e settata a zero.
se la distanza del tassello e' maggiore di tot. la vriabile cambia in 1.
nel personaggio ho messo in step: se viene premuto il tasto M e la variabile del tassello e' 0, lo sprite del tassello cambia.
Ma ho capito che e' concenttualmente errato xke' la variabile e' unica x tutti i tasselli (vicini e lontani dal personaggio).
Dovrei capire come assegnare un valore univoco x ciascun tassello che pero' e' la stessa istance, in modo che chi ha un certo valore cambia sprite, senno' no.
cioe': il tassello vicino ha un valore x e cambia sprite. un tassello lontano di un tot ha un valore y e non cambia. in modo che quando il personaggio si muovera' dopo tot azioni nella mappa, si aggiornera' sempre l'area da colorare. Ma nn conosco la funzione che potrebbe aiutarmi.
Immagine

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da Homunculus »

Le variabili create regolarmente negli oggetti sono locali, (ammenoché non le dichiari tipo global.nome_variabile). Questo vuol dire che se hai 10 tasselli che sono istanze dello stesso oggetto, e una variabile chiamata diciamo "highlighted", questa é indipendente e ne hai 10, una per ogni tassello. Se in un determinato momento TUTTE queste variabili diventano 1, vuol dire che stai sbagliando il metodo. Pe risolvere però dovresti dirci esattamente cosa fai, ovvero il codice/icone che usi alla pressione di M per impostare la variabile.

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

Si infatti.. mi servirebbe settare una variabile unica x ogni tassello ma della stessa istance, che a seconda della distanza dal personaggio assuma un valore. Alla pressione del tasto M i tasselli che hanno un valore < di un x valore cambiano sprite.
Per farti capire la situazione attulae, ho settato nel tassello: in create la variabile "distanzapersonaggio= 0;" in step
if
distance_to_object(personaggio)>= 64
{
distanzapersonaggio = 1;
}
else
{
distanzapersonaggio = 0;
}

Nel personaggio:
in step
if
(keyboard_check_pressed(ord("M"))) && (terreno.distanzapersonaggio= 0)
{
terreno.sprite_index=terrain_enable;
}

Così settato alla pressione del tasto M cambia ttutta l'area.
Immagine

Avatar utente
Homunculus
Admin
Messaggi: 6840
Iscritto il: 25/11/2007, 20:36
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da Homunculus »

Prima di tutto, la tua variabile distanzapersonaggio é locale (quindi già ogni istanza ha la sua variabile indipendente). Idealmente quello mi sembra ok e dovrebbe funzionare.

Il problema sta dopo, perché nelle condizioni hai: terreno.distanzapersonaggio= 0 . terreno a cosa si riferisce? Non a quello che pensi tu, terreno é un oggetto, quindi quale delle tante variabili distanzapersonaggio prendi in considerazione? Per come é fatto GM, questo equivale a dire: se la variabile distanzapersonaggio della prima istanza terreno che trovi é 0, fai qualcosa, che nel tuo caso é evidentemente sbagliato.

Quello che devi fare é passare in rassegna tutte le istanze una ad una e controllare la loro specifica variabile, e questo lo puoi fare comodamente con il costrutto with() <--- cerca nel manuale!!! .

with(terreno) {
if(distanzapersonaggio == 0) {
sprite_index = blah....
}
}

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

Mi sono letto nel manuale lo statment with.. ma mi sa che nn puo' aiutarmi.. perche' raggruppa l'insieme delle istanze, quando invece a me serve darne un valore diverso x ognun istanza.. provero' il tuo suggerimento cmq..
Immagine

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da Solid Snake »

Spiegati meglio! Cosa deve fare la variabile? Quando deve cambiare?
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

Infatti non va... ho messo il codice che mi hai suggerito nel terreno..senza preventivare la pressione del tasto M, giusto x vedere partenza via cosa succedeva.. Potresti spiegarmi meglio la funzionalita' di with? anche se, riprto, forse non e' l'espressione che mi puo' aiutare. :S
Immagine

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

Solid Snake ha scritto:Spiegati meglio! Cosa deve fare la variabile? Quando deve cambiare?
se l'istanza terreno e' lontana un tot dall'istanza personaggio.. allora la variabile distanzapersonaggio cambia in 1
con la pressione del tasto M se la variabile distanzapersonaggio dell'istanza terreno piu' vicina rimane 0 allora cambia sprite.
Immagine

Solid Snake
GMI Advanced
Messaggi: 2093
Iscritto il: 19/12/2010, 16:17
Specialità: Programmazione
Uso: GM:Studio 1.4 Standard
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da Solid Snake »

ZerA78 ha scritto: se l'istanza terreno e' lontana un tot dall'istanza personaggio.. allora la variabile distanzapersonaggio cambia in 1
con la pressione del tasto M se la variabile distanzapersonaggio dell'istanza terreno piu' vicina rimane 0 allora cambia sprite.
Chi deve cambiare lo sprite? il giocatore?

Codice: Seleziona tutto

//STEP Giocatore

with(terreno)
{
 if (distance_to_object(other)>distanza_che_vuoi)
 {
  distanzapersonaggio=1;
 }
 else
 {
  distanzapersonaggio=0;
 }

 if (keyboard_check(ord('M')) and !distanzapersonaggio)
 {
   sprite_index=sprite_che_vuoi;
 }
}
♥♥♥♥♥♥
Immagine
♥♥♥♥♥♥
Spoiler
Immagine

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

no deve cambiare lo sprite del terreno. Non so se hai letto i post precedenti, ma sto cercando di impostare l'area percorribile di un personaggio quando viene il suo turno, in un'area isometrica. Tipo giochi strategici a turno come final fantasy tactics.
la variabile "distanzapersonaggio" e' dell'istanza terreno. quindi dovrei scrivere terreno.distanzapersonaggio==1 giusto?
poi xke' usi il simbolo !?
Immagine

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

ora che ci penso.. ma la distanza che indico e' considerata a 360°?? e se metto 64 significa 64 pixel?
Immagine

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

cmq.. immagina un'area di gioco isometrica formata da 5 tasselli x 5. ogni tassello e' un' istanza e si chiama "terreno". nell'istanza terreno, in create ho settato la variabile "distanzapersonaggio=0".
Ora.. posizionando un personaggio in un x,y della room.. devo far in modo che quando premo il tasto M che servirebbe x mostrare l'area percorribile dal personaggio.. i tasselli vicino al personaggio devono cambiare sprite (diventando percorribili) mentre quelli distanti un tot rimangono normali e quindi nn cambaino e non sono percorribili.
Ora il problema, da come ho capito, e' ke la variabile del terreno "distanzapersonaggio" essendo presente in ogni istanza.. nn cambia e quindi non potro' avere istanze con vriabile 0 e istanze(lo stesso tipo) con variabile 1
Immagine

ZerA78
Membro super
Messaggi: 516
Iscritto il: 01/01/2013, 16:00
Specialità: Idee
Contatta:

Re: creare oggetto in un determinato posto

Messaggio da ZerA78 »

Solid Snake ha scritto:
ZerA78 ha scritto: se l'istanza terreno e' lontana un tot dall'istanza personaggio.. allora la variabile distanzapersonaggio cambia in 1
con la pressione del tasto M se la variabile distanzapersonaggio dell'istanza terreno piu' vicina rimane 0 allora cambia sprite.
Chi deve cambiare lo sprite? il giocatore?

Codice: Seleziona tutto

//STEP Giocatore

with(terreno)
{
 if (distance_to_object(other)>distanza_che_vuoi)
 {
  distanzapersonaggio=1;
 }
 else
 {
  distanzapersonaggio=0;
 }

 if (keyboard_check(ord('M')) and !distanzapersonaggio)
 {
   sprite_index=sprite_che_vuoi;
 }
}
ho provato questo codice e premendo M cambia lo sprite di tutto il terreno.
Immagine

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 50 ospiti