Das Ganze funktioniert wunderbar und genauso wie ich das vorhatte, allerdings kommt es vor, dass die anderen Würfel, nun nicht mehr richtig mit diesem Objekt kollidieren, teilweise durchfallen oder sich überhaupt nicht mehr bewegen.
Registriert: Mo Sep 23, 2002 19:27 Beiträge: 5812
Programmiersprache: C++
Mach das Objekt dynamisch (also Masse > 0, am besten sehr schwer) und pass die Rotation mit einem abgeleiteten Customjoint an. Das mache ich in meiner Panzerdemo für den Turm und funzt wunderbar, Kollisionen reagieren dann auch so wie sie sollen.
Als Grundlage solltest du da logischerweise einen Hingejoint nehmen, und am Ende eine zusätzliche angulare Reihe in der du die Rotation festlegst. Das sähe dann so aus :
hi, danke für die Antwort, ich möchte das Objekt auch maximal um +-45° drehen können, ich werde mir das mit den Joints mal ansehen, etwas in der Richtung hatte ich mir auch schon überlegt.
Ich hab mal in die Dokumentation geschaut und mir nen Universal Joint gebaut (damit ich eine Rotation um zwei Achsen habe):
(modifikation des hinge joints aus der sdl joint demo)
Code:
function CreateUniversalJoint(pNewtonWorld : PNewtonWorld; pPivotPoint : TVector3f): PNewtonJoint;
var
Collider : PNewtonCollision;
Matrix : TMatrix4f;
PinDir0, PinDir1 : TVector3f;
ParentBody : PNewtonBody;
begin
// Create the PARENT body for this joint =======================================
Result := NewtonConstraintCreateUniversal(pNewtonWorld,@pPivotPoint[0],@PinDir0[0],@PinDir1[0], Newtonbox[0].NewtonBody, ParentBody);
// Release the collider
NewtonReleaseCollision(pNewtonWorld, Collider);
end;
Damit funktioniert die Rotation in beide Achsen, allerdings ändert sich auch hier nichts an dem Problem mit der fehlerhaften Kollision.
Die Drehung mache ich nach wie vor wie oben beschrieben, danach rufe ich NewtonUpdate auf. Ich weiß noch nicht genau was es mit den von dir geposteten Zeilen auf sich hat, aber ich denke mal, dass die der Schlüssel sind ^^ Des weiteren wäre es natürlich praktisch die Rotation, wie du sagtest auf einen bestimmten Winkel (+-45°) beschränken zu können.
EDIT: habs nun so gemacht, dass ich alles andere drehe, sprich die Gravitation und die Kamera dementsprechend manipuliere, so spare ich mir jede Menge Joints etc. und es funktioniert.
Mitglieder in diesem Forum: 0 Mitglieder und 4 Gäste
Du darfst keine neuen Themen in diesem Forum erstellen. Du darfst keine Antworten zu Themen in diesem Forum erstellen. Du darfst deine Beiträge in diesem Forum nicht ändern. Du darfst deine Beiträge in diesem Forum nicht löschen. Du darfst keine Dateianhänge in diesem Forum erstellen.