Cos-Sin Problem

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

Orbit

Betreff: Cos-Sin Problem

BeitragFr, Aug 11, 2006 11:14
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
mein Auto fährt nicht immer exakt in die Richtung, in der es zeigt.

Code: [AUSKLAPPEN]

Strict

SetGraphicsDriver(D3D7Max2DDriver())
Graphics 800,600,32,100

Global AutoX:Int = GraphicsWidth()/2
Global AutoY:Int = GraphicsHeight()/2
Global AutoDreh:Float
Global AutoSpeed:Float

Global Auto:TImage = LoadImage("gfx/Auto.bmp")
MidHandleImage(Auto)

SetMaskColor(255,0,255)

Repeat
   Cls

   SetRotation(AutoDreh)
   DrawImage Auto,AutoX,AutoY

   SetRotation(0)

   If KeyDown(KEY_UP)    Then
      AutoSpeed :+.01
      AutoX :+ (AutoSpeed * Cos(AutoDreh))
      AutoY :+ (AutoSpeed * Sin(AutoDreh))
   EndIf
   If KeyDown(KEY_DOWN)  Then
      AutoSpeed :-.01
      AutoX :- (AutoSpeed/2 * Cos(AutoDreh))
      AutoY :- (AutoSpeed/2 * Sin(AutoDreh))
   EndIf
   If KeyDown(KEY_RIGHT) Then AutoDreh :+.8
   If KeyDown(KEY_LEFT)  Then AutoDreh :-.8

   If AutoSpeed = 4 Then AutoSpeed = 4

   Flip
Until KeyHit(KEY_ESCAPE)
endif


fg,
Orbit
 

Skulk

BeitragFr, Aug 11, 2006 11:33
Antworten mit Zitat
Benutzer-Profile anzeigen
was soll dieser punkt hier bewirken?
Code: [AUSKLAPPEN]
If AutoSpeed = 4 Then AutoSpeed = 4


ansonsten ist die lösung des problems simple Smile
du musst AutoX und AutoY als float definieren.


ich hab hier mal die images auskommentiert und gegen ein rechteck getauscht.
Code: [AUSKLAPPEN]

Strict

SetGraphicsDriver(D3D7Max2DDriver())
Graphics 800,600

Global AutoX:Float = GraphicsWidth()/2
Global AutoY:Float = GraphicsHeight()/2
Global AutoDreh:Float
Global AutoSpeed:Float

'Global Auto:TImage = LoadImage("gfx/Auto.bmp")
'MidHandleImage(Auto)

SetMaskColor(255,0,255)

Repeat
   Cls

   SetRotation(AutoDreh)
   'DrawImage Auto,AutoX,AutoY
   DrawRect AutoX, AutoY, 20,5

   SetRotation(0)

   If KeyDown(KEY_UP)    Then
      AutoSpeed :+.01
      AutoX :+ (AutoSpeed * Cos(AutoDreh))
      AutoY :+ (AutoSpeed * Sin(AutoDreh))
   EndIf
   If KeyDown(KEY_DOWN)  Then
      AutoSpeed :-.01
      AutoX :- (AutoSpeed/2 * Cos(AutoDreh))
      AutoY :- (AutoSpeed/2 * Sin(AutoDreh))
   EndIf

   If KeyDown(KEY_RIGHT) Then AutoDreh :+.8
   If KeyDown(KEY_LEFT)  Then AutoDreh :-.8

   Flip
Until KeyHit(KEY_ESCAPE)
War doesn't determine who's right,
war determines who's left...

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group