2D Shooter

Für allgemeine Fragen zur Programmierung mit PureBasic.
MoonWolf
Beiträge: 17
Registriert: 31.07.2009 15:03

2D Shooter

Beitrag von MoonWolf »

Hallo
Für meinen 2D Shooter (Vogelperspektive) möchte ich meine figur in mausrichtung laufen lassen.
Allerdings funktionniert es nich vollständig und ich hab jetz schon 3 stunden nach diesem fehler gesucht und ihn nich gefunden :S.

Code: Alles auswählen

Procedure Walk(direction)
  If player\dir =< 0 And player\dir >= -90
    direc = player\dir+90
    direc2 = 2
  ElseIf player\dir =< -90 And player\dir >=-180
    direc = player\dir + 180
    direc2 = 3
  ElseIf player\dir => 90 And player\dir <=180
    direc = player\dir - 90
    direc2 = 4
  ElseIf player\dir => 0 And player\dir <=90
    direc = player\dir
    direc2 = 1
  EndIf
  If direction = 1
    ;a = c * Sin(alpha)
    ;b = c * Sin(beta)
    If direc2 = 1 Or direc2 = 4
      player\x = player\x + (5 * Sin((90-direc)*#PI /180))
    Else
      player\x = player\x - (5 * Sin((90-direc)*#PI /180))
    EndIf
    If direc2 = 3 Or direc2 = 4
      player\y = player\y + (5 * Sin(direc*#PI /180))
    Else
      player\y = player\y - (5 * Sin(direc*#PI /180))
    EndIf
  EndIf
  
EndProcedure
zur erklärung:
direction = gedrückte taste (1 ist nach vorne)
player\dir = drehung der figur (nach links bis -180, nach rechts bis 180)
direc = winkel der drehung der figur innerhalb eines quadranten
direc2 = quadrant im koordinatensytem, in dem die figur der punkt 0|0 ist.

also das laufen in den 2. und 4. quadranten funktionniert, nur iwie geht das mit dem 1. und 3. nich so richtig. Die figur läuft dort nur auf der y achse richtig. Auf der x achse bewegt er sich nur minimal.

Wär nett wenn mir jemand helfen könnte!! :praise:
DANKE!!!
Benutzeravatar
STARGÅTE
Kommando SG1
Beiträge: 7028
Registriert: 01.11.2005 13:34
Wohnort: Glienicke
Kontaktdaten:

Re: 2D Shooter

Beitrag von STARGÅTE »

Weil ich nur erahnen kann was du vorhast, und ich mit der Procedure alleine nicht so viel anfangen kann, hier mal ein Link zu meinem:
Mausverfolgender Bot + Anhänger

Dort "schwebt" ein Obejkt immer zur Maus, mit Berücksichtigung, dass sich das Obejkt erst drehen muss, bevor es läuft ...

Ganz allgemein:

Um von Winkel zu x-y-Koordinaten zu kommen reicht:

Code: Alles auswählen

x = Cos(Winkel*#Pi/180)
y = Sin(Winkel*#Pi/180)
Dort brauchst du also keine unterteilung in die 4 Quadranten ..
PB 6.01 ― Win 10, 21H2 ― Ryzen 9 3900X, 32 GB ― NVIDIA GeForce RTX 3080 ― Vivaldi 6.0 ― www.unionbytes.de
Aktuelles Projekt: Lizard - Skriptsprache für symbolische Berechnungen und mehr
Antworten