Ballphysik
Übersicht

MogonBetreff: Ballphysik |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Findet Ihr das realistisch?
Und bevor alle meckern: In der BB-Demo funzt es nicht ?! Ich hab BP 1.4 und da gehts. Code: [AUSKLAPPEN] Graphics 1024,768
Global x# = 400 Global y# = 300 Global speedx# = 2 Global speedy# = 2 Global clear = 1 Global anzeige = 1 timer = CreateTimer(400) Repeat SetBuffer BackBuffer() If clear = 1 Then Cls WaitTimer timer Oval x,y,20,20 If KeyHit(199) Then Select clear Case 1 clear = 0 Case 0 clear = 1 End select EndIf If KeyHit(200) Then If speedx <= 0 Then speedx=speedx-1 If speedx >= 0 Then speedx=speedx+1 EndIf If KeyHit(208) Then If speedx <= 0 Then speedx=speedx+1 If speedx >= 0 Then speedx=speedx-1 EndIf If KeyHit(203) Then If speedy <= 0 Then speedy=speedy-1 If speedy >= 0 Then speedy=speedy+1 EndIf If KeyHit(205) Then If speedy <= 0 Then speedy=speedy+1 If speedy >= 0 Then speedy=speedy-1 EndIf x = x + speedx y = y + speedy If speedy < 0 Then speedy = speedy+0.03 If speedy > 0 Then speedy = speedy+0.02 If speedx < 0 Then speedx = speedx+0.0005 If speedx > 0 Then speedx = speedx-0.0005 If x < 0 Then speedx=speedx*-1 If x > 1004 Then speedx=speedx*-1 If y < 0 Then speedy=speedy*-1 If y > 748 Then speedy=speedy*-1 Flip Until KeyHit(1) |
||
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Also für den Luftwiderstand darfst du meines Wissens nach nichts abziehen, sondern dividieren (z.B. durch 1.1), da er bei höheren Geschwindigkeiten noch stärker zunimmt.
Dann könntest du noch die Speed reduzieren, wenn der Ball auf den Boden prallt. Edit: wenn ich mir den Code näher ansehe: warum sind hier Code: [AUSKLAPPEN] If speedy < 0 Then speedy = speedy+0.03
If speedy > 0 Then speedy = speedy+0.02 zwei unterschiedliche Werte? Die Gravitation ist doch immer gleich! und: Code: [AUSKLAPPEN] If KeyHit(200) Then If speedx <= 0 Then speedx=speedx-1 If speedx >= 0 Then speedx=speedx+1 EndIf If KeyHit(208) Then If speedx <= 0 Then speedx=speedx+1 If speedx >= 0 Then speedx=speedx-1 EndIf kann man einfacher so schreiben Code: [AUSKLAPPEN] If KeyHit(200) Or KeyHit(208) Then speedx = speedx + Sgn(Speedx) mfg Spike |
||
- Zuletzt bearbeitet von Spikespine am Do, Feb 24, 2005 19:00, insgesamt einmal bearbeitet
![]() |
Artemis |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie schon Beginnerforum gesagt:
Die Tasten sind vertauschT!!! |
||
![]() |
Mr.Keks |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] speedy = speedy*.999+.2 ; gravitation
finde ich besser
speedx = speedx*.999+.01 ; wind If x < 0 Then x = 0 speedx=speedx*-.8 If x > 1004 Then x = 1004 speedx=speedx*-.8 If y < 0 Then y = 0 speedy=speedy*-.8 If y > 748 Then y = 748 speedy=speedy*-.8 |
||
MrKeks.net |
Mogon |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
@ SHAKESPINE: So Advantage wie WInd oder Luftwiederstand habe ich noch gar nicht eingeplant ![]() ![]() Das mit dem +0.03 und dem +0.02: Wenn beide Werte gleich sind, würde der Ball immer gleich hoch springen und nicht schneller werden, wenn er fällt. @ JonasCleve: Ich bin halt viel zu faul, auf solche Sachen zu achten 8) ![]() |
||
![]() |
Spikespine |
![]() Antworten mit Zitat ![]() |
---|---|---|
Zitat: Das mit dem +0.03 und dem +0.02: Wenn beide Werte gleich sind, würde der Ball immer gleich hoch springen und nicht schneller werden, wenn er fällt.
Ich würde jedoch immer noch sagen, dass es physikalisch nicht ganz korrekt ist. Anstattdessen würde ich in die Boden-Aufprall-Abfrage so machen: Code: [AUSKLAPPEN] If y > 748 Then
y = 748 speedy=(speedy*-1)/1.4 EndIf [edit] halt so wie das von inarie, ist im Prinzip das gleiche! |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group