Pfeil in Richtung Entity
Übersicht

dont_know_to_useBetreff: Pfeil in Richtung Entity |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi
Kennt ihr ein Spiel der X-Reihe von Egosoft oder generell solche Spiele, die im Weltraum spielen? Dort gibt es diese Pfeile, die auf ein ausgewähltes Objekt zeigen, wie auf diesem Screenshot zu sehen ist: http://www.x-speed.de/computer..._x2-db.jpg Wie bekomme ich dies hin? |
||
![]() |
PhillipB |
![]() Antworten mit Zitat ![]() |
---|---|---|
https://www.blitzforum.de/help/AlignToVector | ||
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Verdammt, ich dachte echt, es gibt alle Blitz3D-Befehle auch für minib3d. ![]() Gibt es diese oder eine ähnliche Funktion auch für minib3d und kann ein Mod dieses Thema bitte verschieben? |
||
![]() |
mpmxyz |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://www.blitzbasic.com/code...?code=2782
Ich war zufälligerweise gerade im englischen Forum unterwegs. ![]() mfG mpmxyz |
||
Moin Moin!
Projekte: DBPC CodeCruncher Mandelbrot-Renderer |
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich habe es auch gerade entdeckt, trotzdem danke. ![]() Aber leider funktioniert es anscheinend nicht ganz, mein 2D-Pfeil zeigt trotzdem immer in die selbe Richtung... So habe ich AlignToVector angewandt: Code: [AUSKLAPPEN] AlignToVector arrow,EntityX(tempentity),EntityY(tempentity),0
Müsste doch richtig sein, oder nicht? |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Nö, ist nicht richtig. Der Vektor, den du da angibst, ist der Vektor vom Koordinatenursprung zu deinem Entity. Vermutlich benötigst du eher EntityX(camera)-EntityX(tempentity) oder Vergleichbares.
Edit: Okay, sehe gerade, dass du den Pfeil noch mal anders willst. Diese Richtungs-Pfeil-Sprites sind noch mal ne andere Kiste, da sie ja nur eine Drehachse haben. Da hilft dir AlignToVector nicht unbedingt weiter. Ich benutze für solche Sprites folgenden Code, bei dem ich aber ehrlichgesagt auch nicht mehr so genau weiß, wie ich den hergeleitet habe* xD Code: [AUSKLAPPEN] dy# = DeltaYaw(cam,target)
dp# = DeltaPitch(cam,target) tAngle# = ((ATan2(-dy,dp)+360) Mod 360) - EntityRoll(cam,1) RotateSprite pointerSprite,tAngle+180 ; das hier haengt natuerlich von der ausrichtung des Pfeils im Sprite-Image ab *Mindestens das +360 sieht blödsinnig aus. Aber habe hier kein B3d, um zu testen, obs auch mit einer weniger kruden Formel funktionieren kann. |
||
MrKeks.net |
- Zuletzt bearbeitet von Mr.Keks am Sa, Apr 30, 2011 20:22, insgesamt 2-mal bearbeitet
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Der Pfeil ist ein 2D Sprite (auf dem HUD), der auf ein 3D Objekt zeigen soll. | ||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sorry, hatte nur den letzten Beitrag gelesen und entsprechend dein Problem missverstanden. Siehe Edit im oberen Post. | ||
MrKeks.net |
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hui, danke Keks. Jetzt klappt es. ![]() EDIT: Doch nicht, der Pfeil scheint eher auf den Koordinatenursprung (0,0,0) zu zeigen. EDIT2: Nicht auf den Koordinatenursprung, sondern auf einen Punkt irgendwo, aber nicht auf mein Zielobjekt. ![]() |
||
![]() |
AnniXa |
![]() Antworten mit Zitat ![]() |
---|---|---|
Mit den 2d Draw befehlen kann man es so lösen:
BlitzMax: [AUSKLAPPEN]
Dies malt einen kreis im gewissen abstand zur mitte des bildschirmes in richtung des ziel objectes jedoch werden hier nur X und Z berücksichtigt, da dies für eine draufsicht perspektive gemacht ist (deswegen -90, weil das roll der camera -90 fix ist in diesem beispiel), vieleicht kriefgst du es ja hin es auch noch für Y anzupassen sofern nötig, und mit winkel kannst du dann deinen pfeil entsprechend drehen. ZielX und ZielZ sind die X und Z coordinaten vom ziel object (mit entityX() u.s.w.) , ausgangs X und ausgangsZ sind die coords von dem punkt aus an dem z.B. die camera, oder der spieler ist. |
||
|moonForge|
Ich bin Pokémon Meisterin seit 1998! |
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich wüsste nicht wie ich dies für Y anpassen kann. Habe es so versucht:
BlitzMax: [AUSKLAPPEN] Local winkel:Float = ATan2 ((EntityX(tempentity)- EntityX(cam)), (EntityY(tempentity)- EntityY(cam))) Allerdings klappt das nicht so ![]() |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Versuchs mal mit BlitzBasic: [AUSKLAPPEN] TFormPoint 0,0,0,tempentity,camund dann -TFormedX ![]() |
||
MrKeks.net |
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
So?
BlitzBasic: [AUSKLAPPEN] Winkel =ATan2 (TFormedX,TFormedY) Denn das klappt leider nicht, das Oval bleibt an ein und der selben Stelle. ![]() |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
eigentlich dachte ich an BlitzBasic: [AUSKLAPPEN] Winkel =ATan2(-TFormedY(),TFormedX())(Vorzeichen sind vielleicht Murks....) |
||
MrKeks.net |
dont_know_to_use |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Naja, das Oval bewegt sich zwar, aber sehr sehr langsam und zeigt auch nicht ganz auf das Entity.
EDIT: Keks, wie hast du es bei deinem Spiel DGX9142 himbekommen? |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Der Code in meinem ersten Beitrag in diesem Thread ist aus DGX9142 (bis auf Details). Entsprechend bin ich mir recht sicher, dass der funktioniert ![]() |
||
MrKeks.net |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group