Rotierendes Objekt an rotierendem Objekt ausrichten

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

aimheld

Betreff: Rotierendes Objekt an rotierendem Objekt ausrichten

BeitragMo, Jul 14, 2008 16:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

ich versuche momentan die GTA-Steuerung zu verstehen und zu erweitern. Leider hänge ich grade an einer Stelle, wo ich einfach nicht mehr weiter weiß (ich hab es nicht so mit Mathematischen Formeln Wink ).

Und zwar habe ich eine Figur erstellt, die ich in 360 Winkel gespeichert habe und so weiter, ihr kennt das ja sicher.
Das selbe wollte ich mit einem Mündungsfeuer machen, das sich mit der Figur drehen soll.
Leider dreht sich das Feuer nicht um die Figur, sonder um die Eigene Achse, was natürlich blöd ist, da ein Mündungsfeuer vor die Waffe gehört.

Ich hoffe, ihr könnt mir einen Lösungsansatz geben.

Der Quellcode ist sicherlich noch Optimierungsfähig, aber das ganze soll auch nur eine Art Lerntest sein.

Ich danke euch für eure Mühe.

Code: [AUSKLAPPEN]

Graphics 800,600,16,2
SetBuffer BackBuffer()

Global x#=300,y#=200,winkel#,counter%

TFormFilter 0

Dim spieler(359)
Dim feuer(359)


For winkel=0 To 359
   
   spieler(winkel)=LoadImage("spieler.jpg")
   
   RotateImage spieler(winkel),winkel
   
   MidHandle spieler(winkel)
   
   
   feuer(winkel)=LoadImage("feuer.jpg")
   
   MidHandle feuer(winkel)
   
   RotateImage feuer(winkel),winkel

Next

Repeat:Cls
      
   If winkel > 359 Then winkel = 0
   If winkel < 0 Then winkel = 359
   
   winkel = (450-ATan2(MouseX()-400,MouseY()-300)) Mod 359
   
   If KeyDown(200) Then
      
      x = x + Cos(winkel)
      y = y + Sin(winkel)
      
   EndIf
   
   If KeyDown(208) Then
      
      x = x - Cos(winkel)
      y = y - Sin(winkel)
      
   EndIf
   
   DrawImage spieler(winkel),x,y
   
   If MouseDown(1) Then
      counter=counter+1
      If counter = 10 Then
         DrawImage feuer(winkel),x+50,y+12
         counter=0
      EndIf
   EndIf
   
   Flip
Until KeyHit(1):End

SpionAtom

BeitragMo, Jul 14, 2008 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn links die Figur mit ausgestrecktem Arm, so müsstest du das Mündungsfeuer wie im rechten Bild platzieren:

user posted image
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080
 

aimheld

BeitragMo, Jul 14, 2008 17:50
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

danke für deine Antwort.
Ich hoffe ich habe dich richtig verstanden.

Dies ist das Originalbild:

user posted image

Also müsste ich doch, nach deiner Anweisung das Feuer so setzen:

user posted image

Rausgekommen ist allerdings das:

user posted image

(Letztes Bild auf PC speichern falls nicht animiert)

Xeres

Moderator

BeitragMo, Jul 14, 2008 17:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei MidHandle oder AutoMidHandle sollte ja klar sein warum: Der Drehpunkt liegt nicht auf der Achse des Feuers. Verschiebe das Ding vom Rand in die Mitte des Bildes.
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)
 

aimheld

BeitragMo, Jul 14, 2008 20:06
Antworten mit Zitat
Benutzer-Profile anzeigen
Moin,

danke für den Hinweis Xeres, nur leider befindet sich das Feuer bei der Drehung immer noch nicht vor der Waffe.
Man muss doch irgendwie die aktuelle X und Y Werte rauskriegen, die sich genau vor der Waffe befinden.
Ich kann mir nicht erklären, wie das sonst gehen soll. Ich hoffe ihr belehrt mich eines besseren.

Xeres

Moderator

BeitragMo, Jul 14, 2008 20:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Der Punkt, an dem das Bild angezeigt werden soll, ist Teil eines Kreises um das Parent-Bild:
Code: [AUSKLAPPEN]
X = X_pos + Radius * Cos(Winkel)
Y = Y_pos + Radius * Sin(Winkel)

Wobei X_pos/Y_pos die Koordinaten deiner Figur sind, Winkel der Drehwinkel der Figur und Radius der Abstand von den beiden Bildern...
Entnommen und angepasst aus dem Beispiel von Oval.
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)
 

aimheld

BeitragMo, Jul 14, 2008 21:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahh vielen Dank Xeres.
Die richtigen Radien herauszufinden war zwar kniffelig, da beide den gleichen Wert haben müssen, da sie sonst bei einer Drehung wieder herumfliegen, aber das Ergebnis kann sich sehen lassen Wink
Wieder was dazugelernt.

Danke nochmal

MfG
aimheld

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group