Winkel über 0 rechnen

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Hubsi

Betreff: Winkel über 0 rechnen

BeitragMo, Okt 01, 2012 17:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Hai beisammen.

Ich stell mich gerade etwas blöd an. Meine Spielfigur kann sich um 360 Grad drehen. Jetzt ist mein Problem das die Figur auf dem kürzesten Weg zum Ziel drehen soll. Sprich der Ist-Winkel ist z.B. 270 Grad und er soll jetzt auf 45 Grad drehen. Kürzester Weg wäre jetzt nach rechts, also über 360 Grad drüber. Und da liegt jetzt meine Denkblockade. Was ich bisher probiert habe:

BlitzBasic: [AUSKLAPPEN]
If player_angle(i,j)<>player_dest_angle(i,j) Then ; Ausrichten
tmp_int=Abs(player_dest_angle(i,j)-player_angle(i,j)) ; Normalisieren
If tmp_int<180 Then player_angle(i,j)=player_angle(i,j)+5
If tmp_int>180 Then player_angle(i,j)=player_angle(i,j)-5
If tmp_int=180 Then
If Rand(0,1)=0 Then player_angle(i,j)=player_angle(i,j)-5
EndIf
If player_angle(i,j)>=360 Then player_angle(i,j)=0
If player_angle(i,j)<=-1 Then player_angle(i,j)=355
EndIf


Ich komm nicht auf den Trichter, kann mir jemand einen Schubs in die richtige Richtung geben bitte? Mr. Green
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragMo, Okt 01, 2012 18:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Hubsi,

hier mal ein Beispiel mit einem Panzer
Code: [AUSKLAPPEN]

If posPanzer > Winkel
    If  posPanzer -180 < Winkel
        posPanzer = posPanzer -1
    Else
        posPanzer = posPanzer +1
    End If
Else
If  posPanzer -180 > Winkel
        posPanzer = posPanzer +1
    Else
        posPanzer = posPanzer -1
    End If
   
End If
[BB2D | BB3D | BB+]

Hubsi

BeitragMo, Okt 01, 2012 18:22
Antworten mit Zitat
Benutzer-Profile anzeigen
Tausend vielen lieben Dank Mr. Green Funktioniert im 1:1 Zustand nicht wie geplant, aber der Schubs ging in die richtige Richtung. Damit kann ich basteln. Danke Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Ana

BeitragMi, Okt 03, 2012 3:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Falls das noch aktuell ist, ich hätte den Drehwinkel so berechnet
BlitzBasic: [AUSKLAPPEN]
Function Turn(S:Double,Z:Double)
Local a:Double,b:Double
If S < Z
a = S - Z
b = S + (360 - Z)
Else
a = Z - S
b = Z + (360 - S)
EndIf

If Abs(a) < Abs(b)
Return a
Else
Return b
EndIf
End Function
Don't only practice your art,
but force your way into its secrets,
for it and knowledge
can raise human to divine

Der Eisvogel

BeitragDo, Okt 04, 2012 11:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo Hubsi,

ich stand damals vor dem selben Problem: https://www.blitzforum.de/foru...ght=winkel

MfG
Der Eisvogel
Ungarische Notation kann nützlich sein.
BlitzMax ; Blitz3D
Win 7 Pro 64 Bit ; Intel Core i7-860 ; 8 GB Ram ; ATI HD 5750 1 GB
Projekte: Window-Crasher
Ich liebe es mit der WinAPI zu spielen.

Hubsi

BeitragSo, Okt 07, 2012 9:18
Antworten mit Zitat
Benutzer-Profile anzeigen
Vielen Dank auch Euch natürlich, das Problem ist gelöst Very Happy
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn...

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group