PointEntity und EntityRoll

Übersicht BlitzBasic Blitz3D

Neue Antwort erstellen

 

dont_know_to_use

Betreff: PointEntity und EntityRoll

BeitragSa, Sep 17, 2011 11:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Wie kann ich ein Objekt mittels PointEntity auf ein anderes ausrichten, aber so, dass auch EntityRoll verändert wird? Ich kann aus bestimmten Gründen nicht AlignToVector nutzen, bitte schreibt also nicht "Benutz AlignToVector".

mfg Wink

ZEVS

BeitragSa, Sep 17, 2011 11:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Wie soll denn EntityRoll verändert werden? Zum Ausrichten reichen doch EntityYaw und EntityPitch. EntityRoll ist dazu doch völlig irrelevant (es seie denn, du möchtest dein Objekt nicht mit der Spitze nach irgendetwas ausrichten bzw. die Spitze ist nicht da wo du sie haben willt. Probieren dann RotateMesh).

ZEVS
 

dont_know_to_use

BeitragSa, Sep 17, 2011 12:29
Antworten mit Zitat
Benutzer-Profile anzeigen
Hm, ich glaube ich habe es falsch geschrieben. Sieh dir folgendes Bild an:
https://www.blitzforum.de/upload/file.php?id=10927
Nach dem Klick auf diesen Planeten zur Linken wird die Kamera vor diesen Planeten gesetzt und man kann sie frei um diesen drehen. Allerdings soll die Kamera so vor den Planeten gesetzt werden, dass der Planet sich direkt im Zentrum des Blickfeldes befindet.

ZEVS

BeitragSa, Sep 17, 2011 12:36
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du das mit PointEntity nicht hinbekommst, wird eines der Handle falsch seind oder ein Parent stört. Auf jeden Fall würde ein EntityRoll bei einer Kamera einfach eine Drehung des gesamten Bildes bedeuten, ohne dass sich irgendetwas im Bezug auf das Zentrum ändert.
EntityRoll scheint mir der falsche Ansatzpunkt. Poste doch bitte mal deinen Code (oder relevante Ausschnitte). Dann können wir dir bei der Problemfindung helfen, den EntityRoll scheint da nicht das Problem zu sein.

ZEVS
 

dont_know_to_use

BeitragSa, Sep 17, 2011 12:56
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist der relevante Teil:
BlitzBasic: [AUSKLAPPEN]
If Planetselected=1 Then
PositionEntity pivot,planetx,planety,planetz
If mouseb=2 Then
RotateEntity pivot,-MouseY,MouseX,0
EndIf
EndIf
If mouseb=1 Then
freespace=0
MoveEntity cam,0,0,-9
;PointEntity cam,Planet
Planetselected=1
EndIf

Wenn Maustaste 1 gedrückt wird, wird der Freiflugmodus(freespace) beendet, die Maus um 9 Einheiten nach hinten verschoben und der Planet selektiert. Ist der Planet selektiert, kann man, wenn Maustaste 2 gedrückt wird, die Kamera um den Planeten drehen. Wink

ZEVS

BeitragSa, Sep 17, 2011 13:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Du kannst zwar unter BB die Klammern beim Funktionsaufruf weglassen, aber nicht, wenn du die Funktion zur Ermittlung des Rückgabewertes einsetzt. Also
BlitzBasic: [AUSKLAPPEN]
		RotateEntity pivot,-MouseY(),MouseX(),0

Ich verstehe nicht ganz, wieso du, wenn die Kamera __irgendwo__ (freespace) ist, sie relativ 9px nach hinten verschiebst. 9px vor dem Planeten fände ich sinnvoller.

Prinzipiell ist die Verwaltung von Planetselected fehlerhaft: Wenn der freespace-Modus beendet wird, wird die Kamera zum Pivot geschoben und danach der Pivot in den Planeten. Das würde ich andersherum machen.

Und wenn du PointEntity auskommentierst, passiert da sowieso nichts.

Eventuell kannst du auch diese ganze Pivot-Geschichte lassen und den Planeten zum Parent der Kamera machen.

ZEVS
 

dont_know_to_use

BeitragSa, Sep 17, 2011 13:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Also so:
BlitzBasic: [AUSKLAPPEN]
If Planetselected Then
If mouseb=2 Then
RotateEntity pivot,-MouseY(),MouseX(),0
EndIf
EndIf
If mouseb=1 Then
freespace=0
PositionEntity pivot,planetx,planety,planetz
MoveEntity cam,0,0,9
PointEntity cam,Planet
Planetselected=1
EndIf

So funktioniert es leider immernoch nicht.

Xeres

Moderator

BeitragSa, Sep 17, 2011 13:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Bitte gib immer mehr Informationen als "geht nicht".
Generell sind 2D Mauskoordinaten nicht unbedingt was für 3D Drehungen - relative Bewegungen schon eher. Die Standardvariante sähe bei mir so aus:
Code: [AUSKLAPPEN]
RotateEntity camera, (EntityPitch(camera)+MouseYSpeed() / 4.0),(EntityYaw(camera)-MouseXSpeed() / 4.0),0
MoveMouse GraphicsWidth()/2, GraphicsHeight()/2


Zur ursprünglichen Frage: PointEntity, siehe dritten Parameter roll#.
Win10 Prof.(x64)/Ubuntu 16.04|CPU 4x3Ghz (Intel i5-4590S)|RAM 8 GB|GeForce GTX 960
Wie man Fragen richtig stellt || "Es geht nicht" || Video-Tutorial: Sinus & Cosinus
T
HERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld)
 

dont_know_to_use

BeitragSa, Sep 17, 2011 15:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe es jetzt einfach aus meinem Spiel gestrichen, ohne sieht es sowieso schicker aus. Trotzdem danke für die Hilfe. Wink

ZEVS

BeitragSa, Sep 17, 2011 15:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Das ist zwar gewiss die einfachste Lösung, aber die am wenigsten ergibige. Aus deinem Problem schließe ich, dass dir ein bisschen Übung im Bereich B3D gut helfen würde - auch für die anderen Aspekte deines Spiels.

Wenn du aufgeben möchtest, ist das in Ordnung. Aber wenn nicht, dann glaube nicht, dass du hier irgendjemanden nerven würdest oder so. Ich helfe dir gerne.

ZEVS
 

dont_know_to_use

BeitragSa, Sep 17, 2011 15:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich hab nicht aufgegeben, es sieht nur schöner aus, mit dem was ich jetzt habe. Wink

ZEVS

BeitragSa, Sep 17, 2011 15:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Es ging mir eher um die technischen Aspekte, aber wie du willst.

ZEVS

Neue Antwort erstellen


Übersicht BlitzBasic Blitz3D

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group