Rotierendes Objekt an rotierendem Objekt ausrichten
Übersicht

aimheldBetreff: Rotierendes Objekt an rotierendem Objekt ausrichten |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() 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 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wenn links die Figur mit ausgestrecktem Arm, so müsstest du das Mündungsfeuer wie im rechten Bild platzieren:
|
||
os: Windows 10 Home cpu: Intel Core i7 6700K 4.00Ghz gpu: NVIDIA GeForce GTX 1080 |
aimheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Hi,
danke für deine Antwort. Ich hoffe ich habe dich richtig verstanden. Dies ist das Originalbild: ![]() Also müsste ich doch, nach deiner Anweisung das Feuer so setzen: ![]() Rausgekommen ist allerdings das: ![]() (Letztes Bild auf PC speichern falls nicht animiert) |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
Bei MidHandle![]() ![]() |
||
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
aimheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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. |
||
![]() |
XeresModerator |
![]() Antworten mit Zitat ![]() |
---|---|---|
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 THERE IS NO FAIR. THERE IS NO JUSTICE. THERE IS JUST ME. (Death, Discworld) |
aimheld |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
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 ![]() Wieder was dazugelernt. Danke nochmal MfG aimheld |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group