Kollisionen beim Ping-Pong

Übersicht BlitzBasic Beginners-Corner

Neue Antwort erstellen

Hagbard

Betreff: Kollisionen beim Ping-Pong

BeitragDi, Feb 15, 2005 21:59
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi!!!

Ich progge gerade ein Spiel(Ping-Pong*) und wollte wissen, ob ich für die Kollisionen mit den Wänden und den Schlägern extra für jeden Auftreffwinkel einen entsprechenden Abprall "programmieren" muss.

mfg Blacky



* Dieses Spiel mit zwei Schlägern, die einen Ball hin und her schießen, sodass er einen vorgegebenen Bereich nicht berührt.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragDi, Feb 15, 2005 22:09
Antworten mit Zitat
Benutzer-Profile anzeigen
nein, brauchst du nicht , das ergibt sich von selbst!
du brauchst nur die xSpeed bzw Yspeed umkehren
[BB2D | BB3D | BB+]

Hagbard

BeitragDi, Feb 15, 2005 22:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok,

Ich werd mal n bisschen in der OH nachblättern.

mfg Blacky

Lumne

BeitragDi, Feb 15, 2005 22:17
Antworten mit Zitat
Benutzer-Profile anzeigen
Nein, denn der Abprallwinkel ist gleich dem Aufprallwinkel... (Physik 8te Klasse (glaube ich)).
Soll das Spiel 2D oder 3D werden? Letzteres ist dann doch wieder etwas komplizierter... und da du in den Beginnerbereich gepostet hast, vermute ich mal, dass du auch ein solcher bist. Dann solltest du es wohl besser mit einem simplen 2D-Pong-Klon versuchen, denn echtes Ping-Pong ist ja schon ein wenig komplexer. Vielleicht meintest du ja auch Pong.

Nie aufgeben.

Hagbard

BeitragDi, Feb 15, 2005 22:26
Antworten mit Zitat
Benutzer-Profile anzeigen
Ja, ich meinte Pong (2D) und eigentlich mache ich das einfach nur, um mal verschiedene Bereiche kennenzulernen (Physik) bzw. zu üben.
Bin schon 9. Klasse aber Abprallen(oder so ähnlich) hatten wir da noch nicht.

mfg Blacky
  • Zuletzt bearbeitet von Hagbard am Sa, Apr 17, 2010 15:54, insgesamt einmal bearbeitet

skey-z

BeitragMi, Feb 16, 2005 1:09
Antworten mit Zitat
Benutzer-Profile anzeigen
nurmal eine kleine schönheitskorrektur^^

unser Lehrer hat uns eingebleut "Einfallswinkel gleich Austrittswinkel"

ich weiss zwar nicht, was Pong?? ist, aber wie schon gesagt, wenn der Ball*whatever* auftrifft, einfach nur die entsprechende richtung X bzw Y ins negative uwandeln.

Spikespine

BeitragMi, Feb 16, 2005 11:50
Antworten mit Zitat
Benutzer-Profile anzeigen
wieso denn xspeed und yspeed? normalerweise sind doch winkel entscheidend, oder?
Code: [AUSKLAPPEN]
gx=800 : gy=600
Graphics gx,gy,16,2

winkel = 222

x#=gx/2
y#=gy/2


SetBuffer BackBuffer()
Repeat
   Cls
   
   If winkel < 0 Then
      Repeat
         winkel = winkel + 360
      Until winkel >=0
   ElseIf winkel > 360 Then
      Repeat
         winkel = winkel - 360
      Until winkel <= 360
   EndIf   
   
   
   x=x+cos(winkel)*3
   y=y-sin(winkel)*3
   
   If x < 0 Then
      x=0
      winkel = 180-winkel
   ElseIf x>gx Then
      x=gx
      winkel = 180-winkel
   ElseIf y<0 Then
      y=0
      winkel = 360-winkel
   ElseIf y>gy Then
      y=gy
      winkel = 360-winkel
   EndIf
   
         
   
   Oval x-5,y-5,10,10,1
   
   Flip
Until KeyHit(1)


...müsste auch stimmen

skey-z

BeitragMi, Feb 16, 2005 13:10
Antworten mit Zitat
Benutzer-Profile anzeigen
wenn etwas aus einem bestimmten Winkel auf eine gerade fläche auftritt, dann braucht man keine grossartige Winkelberechnung durchführen.

nehmen wir mal an, du hast links und rechts nen Balken, wo der "ball" abprallt, dann musst du bei ner "Kollision"mit den Balken nur die X richtung ändern, also X ins negative wandeln -(X), weil der Y Wert durch die Kollision nicht verändert wird.

Hagbard

BeitragMi, Feb 16, 2005 15:24
Antworten mit Zitat
Benutzer-Profile anzeigen
Ich werd einfach mal versuchen das mit den ganzen Hilfen von euch hinzukriegen. Zur Not sehe ich mir das von Spikespine genauer an.

mfg Blacky

Lumne

BeitragMi, Feb 16, 2005 17:19
Antworten mit Zitat
Benutzer-Profile anzeigen
Hey Spikespine, diesen Code
Code: [AUSKLAPPEN]
If winkel < 0 Then
     Repeat
         winkel = winkel + 360
     Until winkel >=0
ElseIf winkel > 360 Then
      Repeat
         winkel = winkel - 360
      Until winkel <= 360
EndIf
kann man einfach durch diesen Code: [AUSKLAPPEN]
winkel = winkel Mod 360
ersetzen. (siehe Onlinehilfe)

Es ist doch egal, ob der Winkel negativ ist. Im Grunde ist es sogar egal, ob der Winkel innerhalb von +/- 360 Grad liegt, also könnte man eigentlich komplett darauf verzichten. Ich weiss ja nicht, was du mit winkel noch berechnen willst.
Du könntest außerdem bei der Kollisionsabfrage den Ballradius miteinbeziehen, damit dieser nicht mit seinem Mittelpunkt gegen die Wände stößt, sondern mit seiner Kante.

Spikespine

BeitragMi, Feb 16, 2005 19:13
Antworten mit Zitat
Benutzer-Profile anzeigen
du hast recht. diese zeilen sind allein für dieses beispiel nicht notwendig. das mit dem modulo ist auch bvesser und einfacher, thx.
 

BIG BUG

BeitragMi, Feb 16, 2005 22:52
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du eh mit Winkeln arbeitest, kannste die Kollision gleich für beliebige Winkel einbauen:
Ausfallwinkel = 2 * Wandwinkel - Einfallwinkel
B3D-Exporter für Cinema4D!(V1.4)
MD2-Exporter für Cinema4D!(final)

Neue Antwort erstellen


Übersicht BlitzBasic Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group