Abzug errechnen !?

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

ToeB

Betreff: Abzug errechnen !?

BeitragFr, Nov 30, 2007 16:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
Graphics 800,600,16,2
SetBuffer BackBuffer()

Dim Map(30,30)

Global x#,y#,w,speed#,Abst_x#,Abst_y#,speed_proz#,Var_Speed

Repeat
w = ATan2(MouseX()-x,MouseY()-y)-180
Abst_x = Float(Abs(MouseX()-x))
Abst_y = Float(Abs(MouseY()-y))
If Abst_x > 100 Or Abst_y > 100 Then
If speed < 10 Then speed = speed + 0.1
Var_speed = 0
Else
If Var_speed = 0 Then Var_speed = 1:speed_proz# = speed/100 ;<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Hier !
If speed > 0 speed = speed - speed_proz
If speed < 0 Then speed = 0
EndIf
x = x + Cos(w+90) * speed
y = y - Sin(w+90) * speed
Oval x-10,y-10,20,20
Text 1,1,"X : "+Int(x)+" / Y : "+Int(y)
Text 1,20,"Winkel : "+w
Text 1,40,"Speed : "+Int(speed)
Text 1,60,"Speed_proz : "+Int(Speed_proz)
Flip
Cls
Until KeyHit(1)
End


Könnt ihr mir Sagen, wie ich errechnen soll, wie viel ich von der Speed-Varaiable abzien muss(Speed_proz#), damit der genau bei den Koordinaten der Maus "=0" ist ? Und wie mach ich das, dass der nich so ruckelt, wenn er auf der Maus-Position ist ?

thx und Mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Nov 30, 2007 17:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Zwei Beispiele:

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()

Local MX%,MY%
Local X1#,Y1#
Local X2#,Y2#,Winkel#
Const Speed#=2




While Not KeyHit(1)
   MX=MouseX()
   MY=MouseY()
   
   X1=X1+(MX-X1)/40
   Y1=Y1+(MY-Y1)/40
   Rect X1-4,Y1-4,9,9,0
   
   Winkel=ATan2(MY-Y2,MX-X2)
   If Sqr((MX-X2)^2+(MY-Y2)^2)>Speed
      X2=X2+Cos(Winkel)*Speed
      Y2=Y2+Sin(Winkel)*Speed
   Else
      X2=MX
      Y2=MY
   End If
   Oval X2-4,Y2-4,9,9,0
   
   Flip
   Cls
Wend
End
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

ToeB

BeitragFr, Nov 30, 2007 17:58
Antworten mit Zitat
Benutzer-Profile anzeigen
Geil Danke, das hilft mir weiter !

Very Happy

thx und mfg Crack93
Religiöse Kriege sind Streitigkeiten erwachsener Männer darum, wer den besten imaginären Freund hat.
Race-Project - Das Rennspiel der etwas anderen Art
SimpleUDP3.0 - Neuste Version der Netzwerk-Bibliothek
Vielen Dank an dieser Stelle nochmal an Pummelie, welcher mir einen Teil seines VServers für das Betreiben meines Masterservers zur verfügung stellt!

hectic

Sieger des IS Talentwettbewerb 2006

BeitragFr, Nov 30, 2007 18:47
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn es schon so ist, dann ist ja gut. Kurz nach meinem Post habe ich gemerkt, dass du noch eine Trägheitsdämpfung hast, welche ich bei mir nicht drin hatte. Danach kamm dann ein Anruf etc. und war erstmal beschäftigt. Vielleicht aber folgender Code auch, obwohl du es sicherlich schon alles selbst an deinen Bedürfnissen angepasst hast.

Code: [AUSKLAPPEN]
Graphics 800,600,0,2
SetBuffer BackBuffer()
Local Timer=CreateTimer(100)

Local MX%,MY% ;Maus
Local XP#,YP# ;Position
Local XG#,YG# ;Geschwindigkeit




While Not KeyHit(1)
   MX=MouseX()
   MY=MouseY()
   
   XG=(XG+(MX-XP)*.009)*.9
   YG=(YG+(MY-YP)*.009)*.9
   XP=XP+XG
   YP=YP+YG
   Rect XP-4,YP-4,9,9,1
   
   WaitTimer(Timer)
   Flip 0
   Cls
Wend
End


Generell würde ich versuchen Bewegungen immer zu berechnen und ganz auf If-Abfragen verzichten. Dazu helfen auch oft die gerne vergessenen Befehle wie ql:SGN und ql:ABS weiter. Anstelle If XRichtung>0 Then XSpeed=XSpeed+1 kann man in den meisten Fällen auch XSpeed=SGN(XRichtung) machen.
Download der Draw3D2 V.1.1 für schnelle Echtzeiteffekte über Blitz3D

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group