Problem bei Winkelvergleich von zwei Punkten mit Ausrichtung

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

 

Kekskiller

Betreff: Problem bei Winkelvergleich von zwei Punkten mit Ausrichtung

BeitragSo, März 13, 2005 11:41
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich habe ein olles Problem, ich würde gerne meine Raketenroutine von
Tricorne übernehmen, aber etwas an Code und Bigs einsparen. Nur das Problem
dabei ist, dass ich der Bug, den ich fand, imho schlecht zu beseitigen ist...
Code: [AUSKLAPPEN]
Function UpdateRockets()
  For r.Rocket = Each Rocket
    r\fogcounter = r\fogcounter + 1
    If r\fogcounter >= 100 - ROCKETFOGRATE
      PlaceStaticAnim(r\x, r\y, 95, IMG_fog3, 0, 5)
      r\fogcounter = 0
    EndIf
    r\x# = r\x# + Sin(r\dir) * r\speed#
    r\y# = r\y# + cos(r\dir) * r\speed#
    r\speed# = r\speed# + r\speedadd#
   
    movetodir = CheckDegrees#(r\x#, r\y#, r\movetox, r\movetoy) Mod 360 ;korrigieren
   
    If <movetodir weiter rechts als r\dir>
      r\dir = r\dir - r\wendspeed
    ElseIf <movetodir weiter links als r\dir>
      r\dir = r\dir + r\wendspeed
    EndIf
   
    If r\x# < 0 Or r\x# > SCREENWIDTH - 1
      Delete r.Rocket
     ElseIf  r\y# < 0 Or r\y# > SCREENHEIGHT - 1
       Delete r.Rocket
     EndIf
  Next
End Function

(Die Abfrage, wo das Problem drin sitzt ist mit <> Zeichen gekennzeichnet!)
Ich will hierbei ohne Verlust rausfinden, in welche Richtung sich die Rakete
drehen muss. Aber das Problem dabei ist, dass die Gradanzahl ja von 1 bis 360 geht und somit bei simplen größer-kleiner-Abfragen Probleme auftreten können (deswegen sind in Tricorne die Raketen manchmal sinnlos nach unten gesaust. Ich weiß echt nicht so recht, wie ich das machen muss - habe wohl einen Blackout oder so. Das wird mein erstes richtiges BB-Shooterspiel mit selbstgemachter und hochwertiger Grafik, daher will ich nicht schon wieder solche verdammten Bugs drin haben.
Die Typinstanzliste:
Code: [AUSKLAPPEN]
Type Rocket
  Field x#
  Field y#
  Field dir
  Field movetox
  Field movetoy
  Field wendspeed
  Field speed#
  Field speedadd#
  Field damage
  Field fogcounter
End Type

Global r.Rocket

Code: [AUSKLAPPEN]
Const ROCKETFOGRATE = 96

Code: [AUSKLAPPEN]
Function CheckDegrees#(stx#, sty#, zx#, zy#)
  Local ax# = zx# - stx#
  Local ay# = zy# - sty#
  Local r# = ATan2(ax#, ay#)
  r# = (r# + 360)
  Return r#
End Function

Das müsste eigentlich das wichtige hierbei gewesen sein. Hoffe, ihr könnt mir helfen. Euch wäre ein Credit und ein Tester-Job sicher.

D2006

Administrator

BeitragSo, März 13, 2005 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi,

das hier vielleicht das richtige:

https://www.blitzforum.de/view...el+drehung

???

MfG
D2006

EDIT:
hab gar nichts von Belohnung gelesen.
Will auch keinen Credits oder so, weil die Suche benutzen kann zumindest rein theoretisch jeder.
  • Zuletzt bearbeitet von D2006 am So, März 13, 2005 17:35, insgesamt einmal bearbeitet
 

Kekskiller

BeitragSo, März 13, 2005 16:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke dir, kann ich gut gebrauchen. Aber da der Code von Rallimen ist,
der sich hier nicht meldet und du das nur per Suche gefunden hast und es
nicht dein geistiges Eigentum ist, bleibt die Belohnung aus Wink .

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group