Author Topic: Bewegen in die eine Richtung  (Read 2341 times)

Alexander

  • Guest
Bewegen in die eine Richtung
« on: 2005-Aug-13 »
Hi,

ich hätte da mal wieder 'ne Frage, diesmal für die mathematisch begabteren unter euch ( ich krieg's zumindestens nicht hin :( ).
Hier erstmal der Code soweit:
Code: GLBasic [Select]
LOADSPRITE "Person.bmp", 0


DIM PlayerData[2]
PlayerData[0] = 100  // X-Pos
PlayerData[1] = 100  // Y-Pos

Winkel = 0

WHILE KEY(1) = FALSE

  // Bewegung abfragen
  lr = ( KEY(203) - KEY(205) ) * 2

  PlayerData[1] = PlayerData[1] - ( KEY(200) * 2)

  //dy = KEY(208) - KEY(200)
  Winkel = Winkel + lr

  IF Winkel > 360 THEN Winkel = 0
  IF Winkel < 0 THEN Winkel = 360

  ROTOSPRITE 0, PlayerData[0], PlayerData[1], Winkel

  SHOWSCREEN

WEND

END
Und hier das dazugehörige Bild:


Wie krieg ich das nun hin, das sich das Sprite immer in die Richtung wohin der Pfeil zeigt bewegt?
Es sollte wohl irgendwie mit Sin oder Cos funktionieren, aber sowas hatte ich vor laaanger Zeit gelernt, drum komm ich da nicht so wirklich drauf...

Vielen Dank schonmal für die Hilfe :)

Offline Kitty Hello

  • code monkey
  • Administrator
  • Prof. Inline
  • *******
  • Posts: 10714
  • here on my island the sea says 'hello'
    • View Profile
    • http://www.glbasic.com
Bewegen in die eine Richtung
« Reply #1 on: 2005-Aug-13 »
Quote from: Alexander
Code: GLBasic [Select]
  // Bewegung abfragen
  lr = ( KEY(203) - KEY(205) ) * 2

  // Das Bild ist nicht nach 0° (rechts) ausgereichtet, darum hier etwas
  // anders als gewöhnlich
  PlayerData[1] = PlayerData[1] - COS(Winkel) * KEY(200) * 2
  PlayerData[0] = PlayerData[0] - SIN(Winkel) * KEY(200) * 2

  //dy = KEY(208) - KEY(200)
  Winkel = Winkel + lr

  // Das ist egal
  // IF Winkel > 360 THEN Winkel = 0
  // IF Winkel < 0 THEN Winkel = 360

  ROTOSPRITE 0, PlayerData[0], PlayerData[1], Winkel

  SHOWSCREEN

WEND

END
So geht's.

Alexander

  • Guest
Bewegen in die eine Richtung
« Reply #2 on: 2005-Aug-13 »
Hi,

Vielen Dank für die Mega-Schnelle Antwort :)
Funktioniert einwandfrei!