Abprallwinkel eines Balls
Übersicht

![]() |
eizdealerBetreff: Abprallwinkel eines Balls |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi
Ich Erstelle gerade einen Bildschirmschoner im Praktikum und will darin einen Ball an den Bildschirmseiten abprallen lassen, sodass er immer hin-und-her springt. Jetzt habe ich allerdings das Problem, dass ich es nicht schaffe, den finalen Winkel zu berechnen. Hört sich zwar beinahe schon lächerlich an, aber so ganz einfach ist es wirklich nicht. OK - Abprallwinkel = Aufprallwinkel, aber diese Winkel sind ja relativ zur jeweiligen Wand. Ich paste einfach mal den Code, den ich bisher habe, wobei der ziemlich Müll ist, weil ich damit ausprobiert habe. Nur dass ihr das vom Prinzip her seht, wie ich das meine. Code: [AUSKLAPPEN] If EntityX(Mesh(0)) > 7 Then
If Winkel% <= 180 Then AufWinkel% = 180 - Winkel% AbWinkel% = AufWinkel% Winkel% = Winkel% + 2 * AufWinkel% Else AufWinkel% = 180 - Winkel% AbWinkel% = AufWinkel% Winkel% = Winkel% - 2 * AufWinkel% EndIf EndIf If EntityX(Mesh(0)) < -7 Then If Winkel% <= 180 Then AufWinkel% = 270 - Winkel% AbWinkel% = AufWinkel% Winkel% = Winkel% + 2 * AufWinkel% Else AufWinkel% = 270 - Winkel% AbWinkel% = AufWinkel% Winkel% = Winkel% - 2 * AufWinkel% EndIf EndIf If EntityY(Mesh(0)) > 4 Then Winkel% = Winkel - (90- Winkel) EndIf If EntityY(Mesh(0)) < -4 Then Winkel% = Winkel - (90- Winkel) EndIf |
||
OJay |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
warum so kompliziert? soll doch keine physiksimulation werden, oder? ![]() Code: [AUSKLAPPEN] Graphics 640,480
SetBuffer BackBuffer() BallX = 320 BallY = 240 BallYSpeed = 10 BallXSpeed = 10 Repeat BallX = BallX + BallXSpeed BallY = BallY + BallYSpeed If (BallX < 0) BallXSpeed = 10 If (BallX > 620) BallXSpeed = -10 If (BallY < 0) BallYSpeed = 10 If (BallY > 460) BallYSpeed = -10 Color 255,0,0 Oval BallX, BallY, 20, 20 Flip Cls Until KeyHit(1) hier wird einfach immer speed zur position addiert. geraten die koordinaten ausserhalb des screens, wird speed der jeweiligen achse invertiert, sodass der ball dann in die andere richtung fliegt. so simpel ist das...in 3d wärs dasselbe, nur halt noch eine dimension mehr... wenn du speed noch rand(8,12) machst kannst du sogar noch etwas mehr dynamik reinbringen ^^ |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Wie OJay schon sagt .
So wäre es noch schöner ... If (BallX < 0) BallXSpeed = abs(BallXSpeed) If (BallX > 620) BallXSpeed = -abs(BallXSpeed) If (BallY < 0) BallYSpeed = abs(BallYSpeed) If (BallY > 460) BallYSpeed = -abs(BallYSpeed) |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group