Ping Pong abprallwinkel
Übersicht

haubnaBetreff: Ping Pong abprallwinkel |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ich habe ein problem mein ball prallt nicht richtig ab ich möchte das:
desto weiter links er ist desto stärker prallt er nach links ab und umgekehrt hab schon in mehreren foren gesucht aber leider nichts gefunden ich hoffe ihr könnt mir helfen hier der code Code: [AUSKLAPPEN] Global xmax=1024, ymax=768 Global yy=xmax/2-30,yy2=10 Global xx=xmax/2-30,xx2=758 Global xkugel=xmax/2,ykugel=ymax/2 Global score1=0 Global score2=0 Global winkel=0 Global geschwindigkeit=3 Global w=Rnd(0,360) Graphics xmax,ymax,32,1 SetBuffer BackBuffer() Global ball=LoadImage("C:\Users\David\Pictures\ball.bmp") Global schl=LoadImage("C:\Users\David\Desktop\Ping Pong\gfx\schlaeger.bmp") Global schlaeger2=LoadImage("C:\Users\David\Desktop\Ping Pong\gfx\schlaeger.bmp") If Rnd(0,1)=1 Then winkel=Rnd(105,45) Else winkel=Rnd(315,225) Function geschwindigkeit() If KeyHit(2) Then geschwindigkeit=geschwindigkeit+1 If KeyHit(3) Then geschwindigkeit=geschwindigkeit-1 If geschwindigkeit>=25 Then geschwindigkeit=25 If geschwindigkeit<=1 Then geschwindigkeit=1 End Function Function spieler() DrawImage schl,yy,yy2 DrawImage schlaeger2,xx,xx2 If KeyDown(203) Then yy=yy-3 EndIf If KeyDown(205) Then yy=yy+3 EndIf If KeyDown (30) Then xx=xx-3 EndIf If KeyDown (32) Then xx=xx+3 EndIf If yy<5 Then yy=5 EndIf If yy>954 Then yy=954 EndIf If xx<5 Then xx=5 EndIf If xx>954 Then xx=954 EndIf End Function Function ball() DrawImage ball,xkugel,ykugel xkugel=xkugel+Cos(w)*geschwindigkeit ykugel=ykugel-Sin(w)*geschwindigkeit End Function Function abprallen() If ImagesCollide(schl,yy,yy2,0,ball,xkugel,ykugel,0) Then w=w*-1 abweichung=2*(yy-xkugel) w=w-abweichung EndIf If ImagesCollide(schlaeger2,xx,xx2,0,ball,xkugel,ykugel,0) Then w=w*-1 abweichung=2*(xx-xkugel) w=w+abweichung EndIf If xkugel<=0 Then w=180-w EndIf If xkugel>=1024 Then w=180-w EndIf End Function Function punkte() If ykugel<=-6 Then score1=score1+1 xkugel=xmax/2 ykugel=ymax/2 If Rnd(0,1)=1 Then w=Rnd(105,45) Else w=Rnd(315,225) EndIf If ykugel>=774 Then xkugel=xmax/2 ykugel=ymax/2 score2=score2+1 If Rand(0,1)=1 Then w=Rnd(105,45) Else w=Rnd(315,225) EndIf Text 400,5 ,(score2+" : "+score1) End Function ;hauptschleife While Not KeyDown (1) geschwindigkeit() spieler() ball() abprallen() punkte() If w<=0 Then w=w+360 If w>360 Then w=w-360 Flip Cls Wend End |
||
martin_moehler |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Wenn ich dich richtig verstehe, dann überprüfst du das doch schon hier oder nicht??
Code: [AUSKLAPPEN] If ImagesCollide(schl,yy,yy2,0,ball,xkugel,ykugel,0) Then w=w*-1 abweichung=2*(yy-xkugel) w=w-abweichung EndIf PS: Variablen die einfach nur w heißen verwirren. Besser ist, du gibst ihnen einen Funktionsentsprechenden Namen. |
||
haubna |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
ja aber er prallt nicht richtig ab und ich weis nicht wieso | ||
martin_moehler |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Ich hab dein Programm kurz getestet und mir ist dein Fehler nicht ganz klar. Beschreib ihn bitter näher! Das das Abprallen nicht richtig ist, sagt nicht viel aus!
Gruß Martin |
||
haubna |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naja nach der zeit prallt bei mir der ball irgendwie ab | ||
![]() |
DeVIL |
![]() Antworten mit Zitat ![]() |
---|---|---|
Sehr seltsamer Code XD
Warum benutzt du nicht einfach Sinus und Cosinus? |
||
![]() |
sheldon |
![]() Antworten mit Zitat ![]() |
---|---|---|
http://de.wikibooks.org/wiki/B...y-Tutorial
Da wird auch ein Pong programmiert. Ich glaube das könnte dir helfen. |
||
![]() |
DeVIL |
![]() Antworten mit Zitat ![]() |
---|---|---|
Oh endschuldigung du benutzt sie ja
Ich glaube bei einer Kollision auf der X Achse ist die Formel Winkel = 180 - Winkel Bei der Y Achse Winkel = 360 - Winkel |
||
VampireSilence |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
Du musst der Fläche einfach eine Skala zuweisen, etwa so:
n: [-5|-4|-3|-|2|-1|0|1|2|3|4|5] und dann Multiplizierst du den derzeitigen Abrallwinkel mit [n^1.5]. Das hat dann zur Folge, dass der Betrag des Winkels umso stärker steigt, ye weiter aussen der Ball auf die Fläche (und somit auch auf die Skala) trifft. Anstatt 1.5, kannst du auch kleinere Zahlen über 1 verwenden. Unter 1 würde der Winkel dann schrumpfen. Ich würde dir da empfehlen: Winkel(neu) = Winkel(alt) * [n^k] wobei {1 < k < 2} Liebe Grüße - VampireSilence |
||
haubna |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
naja hab das schon vor 9 tagen geschafft dann hab ich ein brick gemacht und derzeit arbeite ich an einem jump'n'run spiel aber trotzdem danke für eure hilfe | ||
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group