Ausrichtung der Spielfigur nach Maus (3D)

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

 

Nerle

Betreff: Ausrichtung der Spielfigur nach Maus (3D)

BeitragDo, Aug 16, 2007 22:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe eine Anfänger-Frage was die Steuerung der Spielfigur über die Mauskoordinaten betrifft (3D). Ich habe mich eben danach blöde gesucht, dabei aber nichts gefunden, was mir helfen kann, obwohl ich bei der Suche immer wieder über die Kommentare gestolpert bin, dass das alle Ellen lang hier gefragt wird Smile

Es geht um eine ganz simple Ausrichtung der Spielfigur (yaw) mit der Maus. Die Figur ist von oben zu sehen und soll quasi immer in Richtung Mauszeiger sehen. Und das eben in 3D.
PointEntity würde sich hierzu anbieten, dachte ich mir, aber ich wüßte nicht, wie ich das konkret umsetzen soll, da die aktuelle Mauskoordinate ja keine Entity ist. Muss ich jetzt extra ein Objekt basteln, dass als unsichtbarer Mauszeiger fungiert und dann meine Spielfigur daran ausrichten? Bestimmt nicht, oder?

Silver_Knee

BeitragDo, Aug 16, 2007 22:55
Antworten mit Zitat
Benutzer-Profile anzeigen
eine idee wäre hier CameraPick(camera,Mousex(),Mousey()) und der boden muss mit entitypickmode ausgestattet sein. dann kann man sich via pickedX/Y/Z die 3dkoordinate holen. da kannn man nun einn mauszeiger-entity hinstellen. und dann gehts los mit pointentity^^
 

flashmaxel

BeitragDo, Aug 16, 2007 23:23
Antworten mit Zitat
Benutzer-Profile anzeigen
Nimm die Funktion AlignToVector
Real C programmers never die; they cast to void.
 

Nerle

BeitragFr, Aug 17, 2007 3:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe das jetzt mal versucht, aber das scheitert alleine schon daran, dass es mir nicht gelingt, ein Objekt, gleich welches (und sei es ein Cursor oder Zielkreuz) in der 3-Umgebung zweidimensional über den Bildschirm zu bewegen. D.h. das geht schon, aber die Bewegungen des Objekts sind einfach merkwürdig und nicht brauchbar - ich kann mit dem Objekt die Spielfigur nicht umrunden.

Ich denke das Problem ist, die zweidimensionalen Koordinaten die MouseX und MouseY mir geben so umrechnen, dass ich z.B. ein dreidimensionales Objekt als Mauszeiger rund um die Figur und frei über den augenblicklichen Bildschirm bewegen kann Sad Question

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Aug 17, 2007 10:38
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich weiß zB noch nicht ganz genau, wie du dir am Ende diese Steuerung vorstellst. Hier mal ein paar Fragen an dich:

Die Mauskoordinaten sind nur 2D. Wenn du nun in einer 3D-Welt diese 2D-Koordinaten projezieren willst, so gibt es natürlich mehrere Möglichkeiten. So wie ich es nun verstanden habe, siehst du deine Spielfigur von schräg oben und das Terrain auf welchen diese rumläuft. Richtig? Nun willst du eine art 3D-Cursor auf dem Terrain projezieren, welcher sich mit der Maus bewegen lässt. Richtig? Wenn man nun mit der Maus klickt, soll sich die Spielfigur nach diesem Cursor ausrichten und in die Richtung laufen. Richtig?

Wenn alle Antworten mit ja beantwortet werden konnten, so schaue dir mal zunächst folgende Befehle an:

ql:TFormVector für die Bewegung des Cursors X/Z abhänig des Kamerawinkels
ql:TerrainY für die Bewegung des Cursors Y abhängig der Terrainhöhe auf Position X/Z
ql:PointEntity oder ql:AlignToVector zum ausrichten der Spielfigur
ql:MoveEntity Spielfigur,0,0,Speed zum laufen der Spielfigur

Das sollte für's erste genügen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D
 

Nerle

BeitragFr, Aug 17, 2007 14:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Hectic,

Zitat:
Die Mauskoordinaten sind nur 2D. Wenn du nun in einer 3D-Welt diese 2D-Koordinaten projezieren willst, so gibt es natürlich mehrere Möglichkeiten. So wie ich es nun verstanden habe, siehst du deine Spielfigur von schräg oben und das Terrain auf welchen diese rumläuft. Richtig? Nun willst du eine art 3D-Cursor auf dem Terrain projezieren, welcher sich mit der Maus bewegen lässt. Richtig? Wenn man nun mit der Maus klickt, soll sich die Spielfigur nach diesem Cursor ausrichten und in die Richtung laufen. Richtig?


Nicht ganz, aber fast - die automatische Wegfindung muss erstmal nicht sein.
Die Steuerung, die ich realisieren möchte, sähe im Detail ersteinmal so aus:

Ansicht von schräg-oben. Die Spielfigur in der Mitte des Screens.
Gesteuert wird die Figur für den Anfang mal nur mit den Pfeiltasten.

Cursor ist ein Zielkreuz, mit welchem man über den gesamten Screen fahren kann. Dabei dreht sich die Spielfigur immer zum Zielkreuz, d.h. sie guckt immer in die Richtung, in welcher sich von ihr aus gesehen das Zielkreuz befindet - und feuert bei Bedarf natürlich auch in diese Richtung.

Das bedeutet, man soll mit der Spielfigur also auch beispielsweise nach vorne laufen können (Pfeiltaste oben), aber zugleich auch z.B. nach hinten/unten schießen, wenn sich das Zielkreuz unterhalt der Figur befindet..
Die Blick- und Schussrichtung der Figur wird also immer durch das Zielkreuz bestimmt.

Smile

Fuchsi

BeitragFr, Aug 17, 2007 14:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Eine Möglichkeit: Du erstellst eine unsichtbare Plane (Entityalpha=0), weist ihr einen Pickmode zu und positionierst sie immer an der Y-Position der Spielfigur (X- und Z-Position sind egal, da eine Plane ja unendlich groß ist).
Das Positionieren lässt sich gut mit "Entityparent" lösen.
Mit ...

Code: [AUSKLAPPEN]

Camerapick(camera,mousex(),mousey())


...pickst du die Plane an den Mauskoordinaten und drehst die Figur danach zu dem gepickten Punkt (Koordinaten mit Picked-X, Y- und Z-)

Das Drehen funktioniert entweder mit AlignToVector oder indem du ein Objekt an den gepickten Koordinaten positionierst und die Figur danach ausrichtest. (mit Pointentity)

Die Bewegung:
Am besten du erstellt eine Art Dummy-Objekt. Dieses Objekt kannst du jetzt (beispielsweise mit den Pfeiltasten) bewegen.
Danach lädst du die Spielfigur als Parent des Dummy-Objektes.
Das Objekt steuerst du immernoch mit den Pfeiltasten, die Figur kann unabhängig davon gedreht werden, wie oben beschrieben.

Hoffe das hilft dir.

MfG
 

Nerle

BeitragMo, Aug 20, 2007 17:27
Antworten mit Zitat
Benutzer-Profile anzeigen
@Fuchsi,
So, ich hab das jetzt mal so gemacht wie Du geraten hast - und es funktioniert bisher gut Smile
Danke! Very Happy

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group