Realistischer Abprall

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

Egon Dragon

Betreff: Realistischer Abprall

BeitragMo, Sep 27, 2004 12:49
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!

Ich habe folgendes Problem:
Und zwar kriege ich es nicht hin, das zwei kugeln realistisch voneinander abprallen, wenn sie sich berüren.

Die eine Kugel bewegt man mit den Pfeiltasten,
die andere mit W,A,S,D...

Code: [AUSKLAPPEN]

Graphics 800,600,16,1
SetBuffer BackBuffer()

;-->Type<--
Type ball
Field x#,y#            ;<--X und Y Position
Field sx#,sy#         ;<--X und Y Speed
Field s#            ;<--Speed
Field richtung         ;<--Richtung in Grat (0-359)
Field rechts,links,vor   ;<--Tasten
End Type

;-->2 Bälle erschaffen<--
b.ball=New ball
b\x=100
b\y=300
b\richtung=0
b\rechts=205
b\links=203
b\vor=200

b.ball=New ball
b\x=700
b\y=300
b\richtung=0
b\rechts=32
b\links=30
b\vor=17



;#################################################
;-->Hauptschleife<--------------------------------

While Not KeyDown(1)
Steuerrung()
Physik()

Cls
Rendern()
Flip
Wend

;-------------------------------------------------
;#################################################



;#################################################
;-->Functionen<-----------------------------------

   ;-->Steuerrung<--
   Function Steuerrung()
   
   For b.ball=Each ball
   
      ;-->Vorwärts<--
      If KeyDown(b\vor)
         If b\s#<5
         b\s#=b\s#+0.05
         EndIf
      EndIf
      
      ;-->Rechts<--
      If KeyDown(b\rechts)
      b\richtung=b\richtung-1*b\s#
         If b\richtung<0:b\richtung=359:EndIf      
      EndIf
      
      ;-->Links<--
      If KeyDown(b\links)
         b\richtung=b\richtung+1*b\s#
         If b\richtung>359:b\richtung=0:EndIf
      EndIf
   
   Next
   
   End Function

   ;-->Physik<--
   Function Physik()
   
   For b.ball=Each ball
   
      ;-->Bewegen<--
      b\x#=b\x#+b\sx#
      b\y#=b\y#+b\sy#
      
      ;-->Speed-Berechnung<--
      If Not KeyDown(b\vor)
      If b\s#>0:b\s#=b\s#-0.02:EndIf
      EndIf
      b\sx#=(Sin(b\richtung)*2)*b\s#
      b\sy#=(Cos(b\richtung)*2)*b\s#
      
   Next
   
   End Function

   ;-->Rendern<--
   Function Rendern()
   
   For b.ball=Each ball
   
      ;-->Bälle zeichnen<--
      Oval b\x#,b\y#,20,20
      
   Next
   
   End Function

;-------------------------------------------------
;#################################################

regaa

Betreff: Re: Realistischer Abprall

BeitragMo, Sep 27, 2004 13:28
Antworten mit Zitat
Benutzer-Profile anzeigen
egon hat Folgendes geschrieben:
wenn sie sich berüren.


Das ist das Prob. Schreib erstmal ne Kollisionsroutine, und die darauffolgenden Aktionen.
UltraMixer Professional 3 - Download
QB,HTML,CSS,JS,PHP,SQL,>>B2D,B3D,BP,BlitzMax,C,C++,Java,C#,VB6 , C#, VB.Net
 

Timo

BeitragMo, Sep 27, 2004 15:09
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey das Problem habe ich auch (gehabt... bis ichs sein gelassen hab Wink )

Herauszufinden ob sie sich treffen ist nicht so schwer, aber wie sie dann wegfliegen sollen... das ist schwierig!!

Code: [AUSKLAPPEN]

d = Sqr(  (x2-x1)^2 + (y2-y1)^2 )
;distanz = Wurzel aus der Summe der Differenzquadrate der Positionen...
;---> satz des Pythagoras...


aber wie die Bälle dann weiterfliegen sollen... KA Crying or Very sad

Egon Dragon

BeitragMo, Sep 27, 2004 16:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Aber das muss doch möglich sein!!! Crying or Very sad

Bms

BeitragMo, Sep 27, 2004 16:40
Antworten mit Zitat
Benutzer-Profile anzeigen
einfach die bewegungsrichtungen vertauschen, etwa so(musst du noch verändern):

Code: [AUSKLAPPEN]

 x1=ball1x_geschwindigkeit
 y1=ball1y_geschwindigkeit
 x2=ball2x_geschwindigkeit
 y2=ball2y_geschwindigkeit
 ball1x_geschwindigkeit=2x
 ball1y_geschwindigkeit=2y
 ball2x_geschwindigkeit=1x
 ball2y_geschwindigkeit=1y
Reblonce (Jump + Run + Shoot - Game; 20 Levels): Download
 

Timo

BeitragMo, Sep 27, 2004 17:04
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, daran hab ich auch schon gedacht....
das währe zwar eine Art Abstoßung, sie wäre aber sehr primitiv!! Hier im Bild stehen die blauen Pfeile für die Richtung, die die Bälle nach diesem Prinzip hätten und dir roten Pfeile für die Richtung die sie eigentlich dannach haben müssten...
Weiße Pfeile stehen für die Richtung vor der Kollision
user posted image

sbrog

BeitragMo, Sep 27, 2004 17:10
Antworten mit Zitat
Benutzer-Profile anzeigen
schau mal heir

http://www.robsite.de/download...mathematik
 

Timo

BeitragMo, Sep 27, 2004 17:24
Antworten mit Zitat
Benutzer-Profile anzeigen
na bitte wer sagt's denn Very Happy
wusste garnicht das es über so etwas ein tutorial gibt... könnte man ja mal umschreiben für Blitzbasic

stfighter01

BeitragMo, Sep 27, 2004 20:50
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn du was über abprallverhalten von kugeln wissen willst, google mal unter "einfacher zentraler stoss"

mfg stfighter
Denken hilft!
 

Gerhard

BeitragDi, Sep 28, 2004 17:45
Antworten mit Zitat
Benutzer-Profile anzeigen
...oder unter www.Blitzbase.de / Quellcode / Ballsimulation...

Egon Dragon

BeitragDi, Okt 05, 2004 13:03
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke @ All

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group