Crazy PingPong - Ballbewegung
Übersicht

![]() |
NeoxitBetreff: Crazy PingPong - Ballbewegung |
![]() Antworten mit Zitat ![]() |
---|---|---|
Ja Hallo erstmal ich Programmier seit ein paar Tagen mit BlitzMax und
habe nun ein kleinen PingPong Klon programmiert (Genannt: Crazy PingPong) Warum Crazy? Naja der Ball pralt zwar korrekt von der Wand ab, allerdings dreht er die Richtung auch schnurstracks wieder um. Ich zeig euch mal die derzeitige Ball "KI" Code: [AUSKLAPPEN] Function BallSystem() 'Ballfunktion *kotz* ball_x = ball_x + ball_speed_x ball_y = ball_y + ball_speed_y If ImagesCollide(img_ball,ball_x,ball_y,0,img_wand,20,10,0) Then PlaySound sfx_ping ball_speed_x = Rand(-ball_maxspeed,ball_maxspeed) ball_speed_y = Rand(ball_minspeed,ball_maxspeed) If ball_y <= 30 Then ball_y = 32 EndIf If ImagesCollide(img_ball,ball_x,ball_y,0,img_wand,20,580,0) Then PlaySound sfx_ping ball_speed_x = Rand(-ball_maxspeed,ball_maxspeed) ball_speed_y = Rand(-ball_maxspeed,-ball_minspeed) If ball_y >= 580 Then ball_y = 579 EndIf If ImagesCollide(img_ball,ball_x,ball_y,0,img_player,player1_x,player1_y,0) Then PlaySound sfx_ping ball_speed_x = Rand(ball_minspeed,ball_maxspeed) ball_speed_y = Rand(-ball_maxspeed,ball_maxspeed) If ball_x <= 20 Then ball_x = 21 EndIf If ImagesCollide(img_ball,ball_x,ball_y,0,img_player,player2_x,player2_y,0) Then PlaySound sfx_ping ball_speed_x = Rand(-ball_maxspeed,-ball_minspeed) ball_speed_y = Rand(-ball_maxspeed,ball_maxspeed) If ball_x >= 775 Then ball_x = 774 EndIf EndFunction Wie man sieht, bewegt er sich in alle Richtungen , egal, aus welcher richtung der Ball kam. Wie könnte man nun eine Weitaus "Realistischere" darstellung dieser Ball KI machen? Hier könnt ihr euch das Spiel saugen und ausprobieren: http://www.n-light.de.tk - Dort geht ihr auf News und dann CrazyPingPong ![]() MfG Euer Neoxit ![]() |
||
![]() |
Markus2 |
![]() Antworten mit Zitat ![]() |
---|---|---|
Für horizontale/vertikale Wände
brauchste nur x oder y spiegeln . if x<0 then x=0 : speed_x = -speed_x if x>640-1 then x=640-1 : speed_x = -speed_x für Y das gleiche . Sonnst die Regel einfallswinkel = ausfallswikel und mit Sin/Cos arbeiten und dann kannste den Winkel manipulieren wenn der Schläger sich bewegt beim Aufprall . |
||
Dreamora |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Statt mit Sinus - Kosinus kann man alternativ auch mit Vektoren arbeiten, dort ist das gesetz: Einfallswinkel zur Normale der Oberfläche = Ausfallswinkel zur Normale der Oberfläche (das zu berechnen ist eine simple subtraktion des vektors und der projektion des vektors auf die normale) | ||
Ihr findet die aktuellen Projekte unter Gayasoft und könnt mich unter @gayasoft auf Twitter erreichen. |
![]() |
Neoxit |
![]() Antworten mit Zitat ![]() |
---|---|---|
LoL so einfach war das xD Das nächste mal sollte ich wohl etwas mehr an die Physikalischen gesetze denken xD
(Das entfällt mir des öfteren) Also funktioniert soweit super xD Mit vektoren hab ich mich noch nicht beschäftigt ich weiß also nich so ganz wie des funzt und das mit Cos und Sin werd ich mir mal anschauen wie ich des machn muss. ![]() Thx soweit ![]() MfG Neo |
||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group