Relatives Positionieren
Übersicht

![]() |
GizehBetreff: Relatives Positionieren |
![]() Antworten mit Zitat ![]() |
---|---|---|
Eine kleine Frage zur Positionierung eines Objekts/Sprites (3D)... Ich möchte ein Objekt erstellen, es um einen beliebigen Y-Winkel rotieren, und dann in Relation zur neuen Ausrichtung jeweils einen bestimmten Abstand nach rechts davon, also von der neuen Ausrichtung aus, versetzen. Dabei meine ich nicht "absolut rechts" (also auf der globalen X-Achse), sondern vom positionierten und neu ausgerichteten Objekt rechts.
Eigentlich hätte ich gedacht, dass "MoveEntity" dazu verwendet wird. Aber das funktioniert nicht - MoveEntity 100,0,0 läßt das Objekt immer auf der globalen X-Koordinate 100 erscheinen, und nicht 100 Units rechts von der jeweiligen Ausrichtung des Objekts. Zitat: MoveEntity
Beachte, dass das Objekt relativ zu seiner Position und Drehrichtung verschoben wird. Eine Kamera kann somit immer nach vorne verschoben werden - egal ob man zur Seite guckt oder nach unten oder oben... Auch die Abstände werden relativ zur letzten Position betrachtet. Hm - obwohl dieser Befehl genau der Richtige sein müsste, funktioniert er nicht wie gewünscht. Warum? |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
geht:
Code: Graphics3D 800,600,0,2
SetBuffer BackBuffer() camera=CreateCamera() MoveEntity camera,0,0,-40 sprite=CreateSprite() SpriteViewMode sprite,3 While Not KeyHit(1) TurnEntity sprite,0,0,1 If KeyHit(57) Then MoveEntity sprite,2,0,0 RenderWorld Flip Wend End |
||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Gizeh |
![]() Antworten mit Zitat ![]() |
---|---|---|
Seltsam, in meinem Fall klappt es dennoch nicht. Vielleicht liegt die Ursache im restlichen Code, muss ich wohl, nochmal durchgehen... ![]() |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Es klappt eigendlich immer. Wenn du mit Sprites arbeitest, dann solltest du dir mal ql:SpriteViewMode anschauen. | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Gizeh |
![]() Antworten mit Zitat ![]() |
---|---|---|
hectic hat Folgendes geschrieben: Es klappt eigendlich immer. Wenn du mit Sprites arbeitest, dann solltest du dir mal spriteviewmode anschauen.
Habe ich eben schon alles durchversucht, leider ohne jede Änderung... Ich benutze diesen Code: Code: If MouseDown(1) = 1 Then ; Object erstellen object.TPumpgunSmoke = NEW TObject object\model = CreateSprite(Spielfigur) object\frame = 0 ScaleSprite object\model,40,40 RotateSprite object\model,winkel SpriteViewMode object\model,3 MoveEntity object\model,+150,0,0 EntityAlpha object\model,.1 EntityOrder object\model,-1 End If Die Spielfigur ist immer in der Mitte des Screens, und kann gedreht werden. Das neue Object soll halt immer jeweils auf ihrer rechten Seite erscheinen. Das tut es aber nur, wenn ich es, wie hier, zu einem Child der Spielfigur mache. Dann aber habe ich seltsamerweise das Problem, dass es sich mit der Spielfigur mit dreht, obwohl diese Anweisung hier ja durch die IF-Abfrage außerhalb der Main-Loop (d.h. nur einmal pro Mausklick) bearbeitet werden sollte. |
||
![]() |
hecticSieger des IS Talentwettbewerb 2006 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nimm anstelle ql:RotateSprite dann lieber ql:RotateEntity | ||
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D |
![]() |
Gizeh |
![]() Antworten mit Zitat ![]() |
---|---|---|
Jetzt funktioniert´s! Danke Hectic! ![]() |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group