Drehachse verschieben
Übersicht

BroghiBetreff: Drehachse verschieben |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hallo,
ich hab jetzt angefangen, mich mit Blitz3D zu beschäftigen. Im Moment knobbel ich grad an der Kamerasteuerung für ne Art Schiebepuzzle. Ich kenn nur noch fast keine Syntax für die 3D-Befehle, von dem her währen Links zu guten Tutorials auch nicht fehl am Platz. So nun zu meinem Problem: -Wie kann ich die Drehachse eines Objekts verschieben, sodass es sich nicht um die eigene Achse dreht, sondern einen Kreis macht bzw. wie kann ich es direkt um ein anderes Objekt drehen lassen? Hab weder in der BlitzHilfe noch im Forum was dazu gefunden. Danke im Voraus |
||
Wozu lernen wir überhaupt programmieren?
Damit der Computer für uns Aufgaben löst (die wir ohne ihn nie gehabt hätten!). |
![]() |
FireballFlame |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit EntityParent a,b kannst du ein Objekt (a) an ein anderes (b) "anheften". Man nennt dan b das Parent-Objekt von a bzw. a ein Child-Objekt von b.
Wenn du nun b z.B. bewegst, bewegt sich a mit. Und wenn du b drehst, dreht sich a um b ![]() Wenn du nur den Drehpunkt eines Objektes verändern willst, machst du das genau so. Du erstellst ein Pivot-Objekt mit CreatePivot(), setzt es an die Stelle, wo der Drehpunkt sein soll und machst es zum Parent von dem Objekt, das sich drehen soll. Anschließend kannst du den Pivot einfach drehen. |
||
PC: Intel Core i7 @ 4x2.93GHz | 6 GB RAM | Nvidia GeForce GT 440 | Desktop 2x1280x1024px | Windows 7 Professional 64bit
Laptop: Intel Core i7 @ 4x2.00GHz | 8 GB RAM | Nvidia GeForce GT 540M | Desktop 1366x768px | Windows 7 Home Premium 64bit |
Broghi |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hab inzwischen mal so weit ne kleine Kamerasteuerung geschrieben, die mir gefällt: Rechte Maustaste drücken und das Objekt verschieben.
Nur stört mich noch, dass, wenn ich die Rechte Maustaste drücke, das Objekt sofort an eine bestimmte Position verdreht wird. Dass heißt es "schnappt weg", und ich kann mir nicht denken, warum bzw. wie ich es anders machen soll. der MouseSpeed sollte ja 0 sein, wenn man die Maus nicht bewegt, von dem her ist eigentlich nirgends eine Variablenänderung beim Mausklick. Code: [AUSKLAPPEN] ;Camera-Control
While MouseDown(2)=1 FlushMouse pitch=pitch-MouseYSpeed() roll=roll+MouseXSpeed() Text 100,100, pitch+", "+roll+Chr$(13)+MouseYSpeed()+", "+MouseXSpeed(),1,1 if pitch>75 then pitch=75 ;limit pitch to 0<pitch<75 if pitch<0 then pitch=0 RotateEntity parkhaus, pitch,0,roll ;rotate Parkhaus flip Renderworld wend Ist bestimmt irgend ein blöder Fehler, wär nett wenn ihr mir helfen könntet. |
||
Wozu lernen wir überhaupt programmieren?
Damit der Computer für uns Aufgaben löst (die wir ohne ihn nie gehabt hätten!). |
![]() |
NightPhoenix |
![]() Antworten mit Zitat ![]() |
---|---|---|
deine Schleife finde ich irgendwie seltsam ^^ ....
"Solange auf Maus (2) gedrückt, mache... Flip... RenderWorld" ich weiß nicht ob das Absicht war, aber das geht auch anders ![]() Code: [AUSKLAPPEN] Graphics3D 0,0,32,1
SetBuffer BackBuffer() kamera=CreateCamera() PositionEntity kamera,0,0,-5 parkhaus=CreateCube() licht=CreateLight(1) While Not KeyHit(1) ;Camera-Control If MouseDown(2) FlushMouse pitch=pitch-MouseYSpeed() roll=roll+MouseXSpeed() If pitch>75 Then pitch=75 ;limit pitch to 0<pitch<75 If pitch<0 Then pitch=0 RotateEntity parkhaus, pitch,0,roll ;rotate Parkhaus EndIf MoveMouse 300,300 UpdateWorld RenderWorld Text 100,100, pitch+", "+roll+Chr$(13)+MouseYSpeed()+", "+MouseXSpeed(),1,1 Flip Wend End Habs nicht getestet, müsste funktionieren MfG. |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group