richtige kollision
Übersicht

AffjeBetreff: richtige kollision |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
hi
ich bin gerade dabei einen kleinen ping-pong klon zu schreiben, habe hier jedoch ein problem: ich brauche logischerweise 4 variablen, links, rechts, hoch, runter. wenn jetzt der ball z.b. mit dem pannel von spieler2 (rechts) kollidiert, dann soll er ja (physikalisch) korrekt in die andere richtung gehen. ich habe es mit hoch = not hoch links = not links . . gemacht, das geht aber nicht, weil der ball dann wieder in die richtung fliegt, von der er kam (was ja auch logisch ist...) hat jemand ne idee, wie ich ich es besser lösen kann? |
||
![]() |
MBC |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi!
Ich würde sagen, du nimmst jew. 1 Variable für hoch/runter und eine für links/rechts. Je nachdem wohin der Ball jetzt fliegen soll addierst du zu den Variablen entweder positive oder negative Werte. Und wenn der Ball dann irgendwo aufprallt (z.B.: Bildschirmrand, Schläger...) dann nimmst du einfach die Gegenzahl der Variable für links/rechts bzw. hoch/runter, was du halt brauchst. Vielleicht noch'n bisschen Zufall rein, damits nich so langweilig wird. Ich hoffe, ich konnte dir helfen Mit viel freundlichen Grüßen Manuel |
||
Computer sind auch nur Menschen! ![]() |
Affje |
![]() Antworten mit Zitat ![]() |
|
---|---|---|
gehts etwas genauer bitte?? ich habe da echt nicht sooo viel ahnung von.. | ||
![]() |
MBC |
![]() Antworten mit Zitat ![]() |
---|---|---|
Hi,
in Ordnung, ich hatte hier mal irgendwo so'n code rumligen...*kram* Code: [AUSKLAPPEN] Dim x#(250) Dim y#(250) Dim x2#(250) Dim y2#(250) Dim a(250) Dim b(250) Dim c(250) Dim xwert(250) Dim ywert(250) Graphics 800,600,32,1 SetBuffer BackBuffer() For i=0 To 250 x#(i)=Rnd(800) y#(i)=Rnd(600) a(i)=Rnd(255) b(i)=Rnd(255) c(i)=Rnd(255) x2#(i)=Rnd(-0.5,0.5) y2#(i)=Rnd(-0.5,0.5) Next plus=100 Repeat For i=1 To plus x(i)=x(i)+x2(i) y(i)=y(i)+y2(i) Color a(i),b(i),c(i) Oval x(i),y(i),10+Rnd(-7,7),10+Rnd(-7,7) ;--------------------------------------------- ;--------------------------------------------- If x(i)<0 Then x2(i)=-x2(i) If x(i)>800 Then x2(i)=-x2(i) If y(i)<0 Then y2(i)=-y2(i) If y(i)>600 Then y2(i)=-y2(i) ;---------------------------------------------- ;---------------------------------------------- Next Flip Cls Until KeyHit(1) End Also, ich denke, das, was da eingerahmt ist, istdas was du brauchst: Immer wenn das Bild mit dem Bildschirm kollidiert, dann wird einfach die Richtung (wenns oben/unten kollidiert dann y-Richtung, links/rechts y-Richtung) umgedreht. Deshalb fliegt das Ding dann in die andere richtung weiter, also in einem Winkel von 90° (Einfallswinkel=45°=Ausfallswinkel=45°). Und anstatt das du dann nur immer stumpf die Richtung änderst hab ich gedacht, dass du einfach dann z.B.: Code: [AUSKLAPPEN] If x(i)<0 Then x2(i)=-x2(i)+Rnd(-2,2) If x(i)>800 Then x2(i)=-x2(i)+Rnd(-2,2) If y(i)<0 Then y2(i)=-y2(i)+Rnd(-2,2) If y(i)>600 Then y2(i)=-y2(i)+Rnd(-2,2) schreibst. Ich hoffe, ich habe es jetzt einigermaßen verständlich erklärt, schau dir einfach mal oben das Programm an, vielleicht verstehstes dann auch besser... Falls noch weitere Fragen aufkommen, bin ich gern bereit zu antworten, allerdings erst morgen wieder, weil ich jetzt noch'n bisschen schlafen muss, morgen ist Schule... Also dann, viel Spaß noch damit Mit freundlichen Grüßen Manuel P.S.: Die Punkte sollen alle Schmetterlinge sein, hab ich mir mal als bildschirmschoner geproggt, sieht ganz witzig aus... |
||
Computer sind auch nur Menschen! ![]() |
![]() |
Hubsi |
![]() Antworten mit Zitat ![]() |
---|---|---|
Code: [AUSKLAPPEN] if kolli then richtungx=richtungx*-1
if kolli then richtungy=richtungy*-1 ballx=ballx+richtungx bally=bally+richtungy |
||
Den ganzen Doag im Bett umanandflagga und iaz daherkema und meine Hendl`n fressn... |
Übersicht


Powered by phpBB © 2001 - 2006, phpBB Group