Animationen bewegt sich nur bedingt in Klickrichtung

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Ana

Betreff: Animationen bewegt sich nur bedingt in Klickrichtung

BeitragMi, Apr 15, 2009 15:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Ahoi,
ich versuch gerade laufen zulernen. So viel zu mir Wink
Allerdings funktioniert das ganze nicht sonderlich zu verlässig. Links unten ist ganz kritisch und ab und zu zischt meine animation auch ganz stramm nach oben oder unten ab, allerdings find ich den grund dafür nicht ...

Code: [AUSKLAPPEN]

Function setfigur (Nr)
   Cls
   If frame = Nr Then Frame = Nr + 4 Else Frame = Nr
   DrawImage Pfeile,x,y,frame
   Delay 100
   Flip
End Function



Function Walkfigur (xZiel, Yziel)
;Entfernung
xWeg = Xziel - x
yweg = yziel - x
;Pythagoras
Strecke = Sqr (xweg^2 + yweg^2)
Schritte = strecke / 20
If Schritte = 0 Then schritte = 1

;Schrittweite
xdiff = xWeg / schritte
ydiff = yweg / schritte

;Steigung
If xweg <> 0 Then
   steigung = yweg / xweg
Else
   Steigung = 999
EndIf

;Bewegung

For i = 1 To schritte
   x = x + xdiff
   y = y + ydiff
   If (steigung >= -1) And (steigung =< 1) Then
      If xweg < 0 Then
         setfigur 3
      ElseIf xWeg > 0 Then
         setfigur 1
      EndIf
   EndIf
   If (Steigung < -1) Or (Steigung > 1) Then
      If yweg < 0 Then
         setfigur 2
      ElseIf yweg > 0 Then
         setfigur 0
      EndIf
   EndIf
Next
End Function


SetBuffer BackBuffer()

MidHandle pfeile

x = 512 : y = 380

Repeat
If MouseDown (1)

   xziel = MouseX()
   yziel = MouseY()
   walkfigur xziel,yziel
   
Else

   DrawImage pfeile, x,y, 0
   Flip
EndIf
Until KeyDown(1) Or MouseDown(2)

Silver_Knee

BeitragMi, Apr 15, 2009 16:00
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
yweg = yziel - x


sicher dass das so sein soll?

Code: [AUSKLAPPEN]
   Delay 100


Damit hältst du den ganzen code auf. Würde ich nicht empfehlen Besser ist eine Konstellation mit Millisecs etwa
Code: [AUSKLAPPEN]
VergangeneZeit=Millisecs()-oldtime
oldtime=Millisecs()

könnte Zeiten messen ohne den Code zu stoppen

Ansonsten helfen dir Wahrscheinlich Sin und Cos. Damit wirst du deinem Schrittsystem da aus dem Weg gehen können.

Ana

BeitragMi, Apr 15, 2009 16:16
Antworten mit Zitat
Benutzer-Profile anzeigen
Ah das mit dem x war das problem ... vielen dank
allerdings verlangt das ganze ja immer wieder ein cls, wenn ich nun mehr objekte habe wäre es ja ungünstig die immer neu zeichnen zu müssen oder? Kann man dann in dem Fall ViewPort verweden? Kann man das dann irgendwie x und y abhänig machen?
 

matze-t

BeitragMi, Apr 15, 2009 17:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Bei den meisten Spielen macht ist es kein Problem jedes mal alles neu zu zeichnen. Auch wenn damit theoretisch zu viel gezeichnet wird führt das normalerweise zu keinem Geschwindigkeitsproblem. Wenn das doch der Fall ist kannst dir darum immer noch Gedanken machen. Als Faustregel kannst du eigentlich immer nehmen: 1. programmieren, 2. Optimieren.

Silver_Knee

BeitragMi, Apr 15, 2009 19:42
Antworten mit Zitat
Benutzer-Profile anzeigen
klar kannst du mal mit viewport copyrectfast etc mal optimieren allerdings solltest du dir merken dass Drawimage wohl das schnellste sein wird was du 2D als Zeichenbefehl mit der Anzeigegröße bekommst

Ana

BeitragMi, Apr 15, 2009 20:47
Antworten mit Zitat
Benutzer-Profile anzeigen
okay, war auch nur so hypothetisch, vielen dank

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group