IsStatic, probleme..

Topics: Developer Forum, User Forum
Nov 21, 2009 at 3:18 PM

Hallo Zusammen, hab jetzt mal etwas mit dem farseer gespielt, muss doch echt ein dickes Lob loswerden, zum einstieg bestens geeignet..

Hab jetzt mal aber doch noch ne frage.. Hab mir zu einem "Ball Objekt" je ein Body und ein Geom erschaffen und in den simulator "geadded", dieses Objekt soll erst auf knopfdruck "beweglich" sein(d.h. am anfang stelle ich beim body isStatic auf true).. ändere ich nun die IsStatic wieder auf false tut sich aber nichts, und ich kann das objekt immernoch nicht bewegen.. ich glaub ich steh nur gerade ordentlich auf dem schlauch und hab einfach etwas übersehen..

Ach so nebenbei eventuell könnt Ihr mir noch ein bestehendes Problem erklären, beim ausführen von dem OnCollision möchte ich einen ton ausgeben

(Via Mediaplayer-Klasse spiele ich bereits Hintergrundmusik ab und möchte darüberhinaus beim kollidieren von zwei objekten ein mp3 abspielen "bäm")

nach dem ich nach" erfolgreicher" Kollision in die Methode Collided gerate verschwindet das objekt, und ich höre nach ordentlicher verzögerung den Ton.. sollte aber natürlich nicht passieren.. ;) 

Ball.OnCollision = new CollisionEventHandler(Collided);
...
public bool Collided(Geom geometry1, Geom geometry2, ContactList contactList)
        {
            MediaPlayer.play(SongA);
            return true;
        }


Beste Grüße, schönes WE und vielen Dank

PlexiGl

 

Coordinator
Nov 21, 2009 at 4:49 PM

It would help out a lot if you wrote your problem in English. My German is not too good. :)

Nov 21, 2009 at 5:05 PM

thx for your patience genbox, of course i can try to explain it:

lets say i have a "ball-object", which has the usual body and geom, both works fine normaly, but if i start with a ball object which is set (with body.isStatic = true) to static, and try to trigger the object to be moveable by setting the body's isstatic back to false it kinda does nothing.. i thing i overlooked something, shouldn't be a big deal... could you give me an example how to make a object which is static to be moveable again..

second problem was to play a sound if two objects have collided (like a ball dipping on the ground), right now iam using the mediaplayer to play background-music, but it would be great if i can make some soundeffects caused by the  CollisionEventhandler.. when the "collided" method is called, the backgound music and object-movements stopp and after a while the soundeffect plays once, and all collided objects are missing.. ???

Ball.OnCollision = new CollisionEventHandler(Collided);

..
public bool Collided(Geom geometry1, Geom geometry2, ContactList contactList)
        {
            MediaPlayer.play(SongA);
            return true;
        }

THX a lot
PlexiGl
Coordinator
Nov 21, 2009 at 5:55 PM

Setting IsStatic to true and then false, should make a body movable again. Make sure you are setting the property on the right body.

The second issue sounds like something is crashing. You can use the SoundEffect class from the XNA framework to play sounds. I'm not sure if that has changed since the last game I made was in XNA 2.0.

Nov 21, 2009 at 6:07 PM

Ok, will check it..

First problem is solved, just like you said, i overlooked that i copied that body and changed the wrong one..

for the second one i will try to debug and fix this problem, when iam done i will post my solution for a music and soundeffects player in here..

 

thx a lot and have a nice weekend

PlexiGl