Come funziona physics_joint_delete?

Hai una curiosità o un problema con Game Maker? Domanda e ti sarà risposto!
Rispondi
Avatar utente
celeste orsa
Newbie
Messaggi: 10
Iscritto il: 02/11/2018, 17:11
Specialità: Grafico Compositore
Uso: GM:Studio 2
Contatta:

Come funziona physics_joint_delete?

Messaggio da celeste orsa »

salve a tutti! avrei bisogno di un piccolo aiuto per capire bene come funziona questa costante: physics_joint_delete.
Ho provato a creare un giunto tra un oggetto e un'altro con physics_joint_rope_create inserendolo in una variabile:

Codice: Seleziona tutto

var attach =0;
if (oFly.state = Fly.picking_walnut) 
{
     attach = physics_joint_rope_create (oWalnut_picked, oFly, x, y+1, oFly.x, oFly.y-1,6, true);
}
però quando richiamo il giunto dentro la costante "physics_joint_delete" in questo modo:

Codice: Seleziona tutto

physics_joint_delete(attach);
il giunto non si rompe.
Qualche aiuto su come usare questa costante nel modo corretto? a voi funziona?

Jak
Admin
Messaggi: 12355
Iscritto il: 19/08/2009, 16:20
Specialità: Programmazione 3D
Uso: GM:Studio 2
Contatta:

Re: Come funziona physics_joint_delete?

Messaggio da Jak »

Non ho mai suato la fisica integrata quindi mi limito a darti un paio di dritte generiche.
Hai verificato di non avere per sbaglio creato un secondo joint sull'oggetto così da eliminare soltanto uno dei tanti?
Prova ad effettuare le stesse operazioni che stai facendo in un'ambiente "finto", con esclusivamente quel joint inserito a manina. Le funzioni sembrano piuttosto semplici quindi le cose sono 2, o stai sbagliando qualcosa esternamente al codice che hai scritto, o cè un bug su GM (escluderei il bug visto che sono funzioni molto usate e non cè nulla sui bug segnalati)
oWalnut_picked e oFly immagino che siano istanze e non oggetti giusto?
Vedo che quando crei il joint ti riferisci a x ed y direttamente, suppongo questo codice venga quindi richiamato su oWalnut_picked, se hai ripetuto il codice anche su oFly si crea appunto un doppio joint e ne stai eliminando soltanto uno.

PS: Anzichè colorare in verde usa il tag Code per il codice. È molto più leggibile così.
Time to feel, time to believe
Dare to see what may come of our future
Lift your head, broaden your gaze
Speak your mind and your thoughts they will follow you

Avatar utente
celeste orsa
Newbie
Messaggi: 10
Iscritto il: 02/11/2018, 17:11
Specialità: Grafico Compositore
Uso: GM:Studio 2
Contatta:

Re: Come funziona physics_joint_delete?

Messaggio da celeste orsa »

Ciao, grazie per la risposta! Ho provato come hai detto tu a ricreare la situazione in un ambiente finto, e il giunto si stacca quando voglio... funziona alla grande. Ho evidentemente sbagliato qualcosa nel progetto... Comunque mi è bastato fare così:
Ho creato due oggetti (oA,oB), quando premo "E" si uniscono e quando premo "C" si staccano.

Codice: Seleziona tutto

if (pick_object)//tasto E
   {
		attach = physics_joint_rope_create (oA, oB, x, y+1, oB.x, oB.y-1,6, true);
		             physics_joint_set_value(attach, phy_joint_damping_ratio,5); 
                             physics_joint_set_value(attach, phy_joint_frequency,1); 
   }

if (release_object)//tasto C
   {
		attach = physics_joint_delete (attach);
   }

Rispondi

Chi c’è in linea

Visitano il forum: Nessuno e 26 ospiti