Pagina 1 di 1

Come funziona physics_joint_delete?

Inviato: 07/11/2018, 13:08
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?

Re: Come funziona physics_joint_delete?

Inviato: 07/11/2018, 13:42
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ì.

Re: Come funziona physics_joint_delete?

Inviato: 07/11/2018, 16:25
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);
   }