2D-Koordinaten in 3D-Koordinaten umwandeln.

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

Tankbuster

Betreff: 2D-Koordinaten in 3D-Koordinaten umwandeln.

BeitragMo, Nov 17, 2008 23:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich brauche das ganze, um ein Fadenkreuz (Sprite) immer an der Mausposition anzeigen zu lassen.
Natürlich hatte ich erstmal die Pick-Befehle im Kopf, aber die kann ich nicht verwenden, da sie nicht flüssig verlaufen. Wenn ich z.B. die Camera z.B. über mein Terrain gleiten lasse, ruckelt das Fadenkreuz immer kurz.

Deshalb hab ich mir einfach gedacht, dass ich das Fadenkreuz mal eben so an die Maus hefte. Da das ein 3D-Objekt ist, ist das aber ganzschön schwer, oder ich komm nur nicht hinter die Logik.

Natürlich hab ich mich schon selber darüber schlau gemacht. Dabei bin ich auf ein Beispiel von Mr. Keks gestoßen, und ich habe daraus versucht es so zu lösen:

Code: [AUSKLAPPEN]
PositionEntity Fadenkreuz,cam_x,cam_y,cam_z
RotateEntity Fadenkreuz,EntityPitch(cam,1),EntityYaw(cam),EntityRoll(cam)
MoveEntity Fadenkreuz,(mouse_x-GraphicsWidth()/2)*32,(-mouse_y+GraphicsHeight()/2)*32,32


cam_x/y/z sind die globale Position der Kamera.
mouse_x/y die 2D-Koordinaten der Maus.

Warum funktioniert es nicht? >.<
Das Fadenkreuz schwirrt sinnlos irgedwo in der Gegend rum >.<

PS: Die Draw3D kann ich dafür auch nicht verwenden, denn damit habe ich das Hud bemalt, und später die Hud-Kamera etwas schräg gestellt. Dann sieht alles toller aus, nur auf der schrägen Fläche kann ich das Fadenkreuz natürlich nicht anzeigen, da es dann immer etwas neben der wirklichen Mausposition erscheint.

PS²:GraphicsWidth/Height wird natürlich wenn alles funktioniert durch eine Variable ersetzt *g*

MFG: Tank
Twitter
Download Jewel Snake!
Windows|Android

hectic

Sieger des IS Talentwettbewerb 2006

BeitragMo, Nov 17, 2008 23:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Versuche es doch mal mit folgender Zeile

Code: [AUSKLAPPEN]
   MoveEntity Fadenkreuz,(mouse_x-GraphicsWidth()/2),(-mouse_y+GraphicsHeight()/2),GraphicsWidth()/2


Im übrigen würde ich GraphicsWidth()/2 in eine Variable speichern und das ständige aufrufen der Funktionen unterlassen. Das müsste dann etwas schneller sein.

Edit1: Zitat:
PS²:GraphicsWidth/Height wird natürlich wenn alles funktioniert durch eine Variable ersetzt *g*


OK, vergiß mein zweiten Vorschlag *lalala*
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ZaP

BeitragDi, Nov 18, 2008 17:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe mir vor längerer Zeit was geschrieben, das mir bis heute dabei hilft:

Code: [AUSKLAPPEN]

PositionEntity Entity, (X - Auflösung_horizontal / 2) / KameraZoom / (Auflösung_horizontal / 2), (Y - Auflösung_vertikal / 2) / -KameraZoom / (Auflösung_horizontal / 2), 1


Vorher vielleicht noch HandleSprite, Sprite, -1, 1.
Starfare: Worklog, Website (download)

Tankbuster

BeitragDi, Nov 18, 2008 18:43
Antworten mit Zitat
Benutzer-Profile anzeigen
Wow, danke an euch beide.
Ich denke das hier ist jetzt erledigt *g*
Twitter
Download Jewel Snake!
Windows|Android

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group