AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Nochmal Pong ;-)

Ein Thema von .chicken · begonnen am 11. Mai 2007 · letzter Beitrag vom 11. Mai 2007
Antwort Antwort
Seite 1 von 2  1 2      
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#1

Nochmal Pong ;-)

  Alt 11. Mai 2007, 18:53
Also ich hatte ja vor langer Zeit schonmal versucht ein Pong zu realisieren, bei dem der Ball an allen vier Seiten kollidieren kann. Damals bin ich daran gescheitert, nun habe ich es eigentlich recht gut realisiert (wie ich finde). Muss nochn bissl ausgebessert werden aber sonst passts.

Jetzt zu meinem Problem. Wenn ich die Schläger bewege, und sie damit in die Position des Balls reinbewege, dann fliegt der Ball einfach durch den Schläger, weil er nicht an der Außenkante kollidiert.
(Die Kollision wird ja erst nach dem Bewegen des Schlägers aufgerufen, wo der Ball dann schon mittem im Schläger ist!)

Wie kann ich das verhindern? Wer ne Idee?

Danke schonmal
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#2

Re: Nochmal Pong ;-)

  Alt 11. Mai 2007, 19:04
Du lässt den Ball vom Schläger abprallen, sobald sich die Bounding-Boxes (kleinstes Rechteck, das ein Objekt ganz umschließt; beim Rechteck also ebenjenes, beim Kreis ein Quadrat mit dem Kreisdurchmesser als Seitenlänge) überlappen. Programmieren musst du dafür fast nichts, denn Delphi nimmt dir fast die gesamte Prüfung mit der Funktion Delphi-Referenz durchsuchenIntersectRect ab.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#3

Re: Nochmal Pong ;-)

  Alt 11. Mai 2007, 19:40
Hm, danke erstmal für die Antwort.
Aber so leicht ist das leider nicht. Ich kann damit dann zwar überprüfen, ob die Rechtecke sich überschneiden, aber ich muss den Ball dann ja auch richtig Bewegen lassen, dh wenn ich nach oben bewege muss der Ball schwung nach oben bekommen.

Aber gut ich denke da faellt mir dann was zu ein, ich versuch des einfach mal!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#4

Re: Nochmal Pong ;-)

  Alt 11. Mai 2007, 20:34
Wenn sich sowohl Paddle als auch Ball gleichzeitig bewegen, ist das gar nicht so leicht zu entscheiden, da ja nur eine diskrete Bewegung vorliegt; es wäre sicherliche das Einfachste, in diesem Fall den Ball immer zurück ins Feld spielen zu lassen. In allen anderen Fällen kannst du die nächstliegende Kante des Paddles errechnen, an dieser musst du den Geschwindigkeitsvektor des Balls spiegeln.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#5

Re: Nochmal Pong ;-)

  Alt 11. Mai 2007, 20:38
Also ich lös das n bisl anders.
Im Timer überprüf ich immer ob die Tasten gedrückt werden um den Schläger zu bewegen.
Wenn zB nach oben gedrückt wird, dann prüf ich ob sich der Ball und der Schläger nun überschneiden. Ist das der Fall, dann prüf ich zuerst ob der Ball sich ggn die Schlägerrichtung bewegt um ihn dann zu reflektieren, oder ob er sich mit dem Schläger bewegt.

In beiden Fällen wird er dann auf die Position des Schlägers gesetzt (ausser er sitzt schon oben aner Wand, dann wird der Schläger auf Posi des Balls gesetzt) und dann wird seine Geschwindigkeit noch etwas erhöht, weil er ja angeschoben wird!

So klappts im Groben, muss nurnoch n paar Fehler ausbessern.

Kann man doch gut so lösen oder? Hat wer nen besseren Vorschlag?
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#6

Re: Nochmal Pong ;-)

  Alt 11. Mai 2007, 20:58
Wie wäre es mit meinem ? Ich würde es selbst genau wie beschrieben lösen, bei jedem Kontakt noch die Geschwindigkeit des Paddles zu der des Balls addieren, Verschieben sollte man auch nichts müssen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#7

Re: Nochmal Pong ;-)

  Alt 11. Mai 2007, 21:04
Häh, aber wenn der Ball zB schon mitten im Paddle ist, dann kann ich doch nicht einfach nur seine Bewegung ändern. Er wird doch vom Paddle vor sich hergeschoben und dann noch Schwung hinzugegeben.
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#8

Re: Nochmal Pong ;-)

  Alt 11. Mai 2007, 21:08
Wie gesagt, wenn sich das Paddle bewegt, wird der Ball in meiner Variante immer zur Spielfeldmitte reflektiert, um eben solchen Problemen zu entgehen. Da der Ball horizontal dabei nicht abgebremst wird, wird er im nächsten Frame das Paddle auf jeden Fall wieder verlassen haben.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
.chicken

Registriert seit: 5. Dez 2006
459 Beiträge
 
#9

Re: Nochmal Pong ;-)

  Alt 11. Mai 2007, 21:14
Häh, vielleicht versteh ich dich eifnach nur falsch....

Also wenn das Paddle sich bewegt, würdest du den Ball einfach immer mitbewegen oder wie?

Aso, jetzt versteh ich wie du meinst, nein also bei mir ises so, dass der Ball sich auch oberhalb des Paddles bewegen kann.
Deswegen kann ich ihn nicht einfach immer abprallen lassen!
  Mit Zitat antworten Zitat
Benutzerbild von Khabarakh
Khabarakh

Registriert seit: 18. Aug 2004
Ort: Brackenheim VS08 Pro
2.876 Beiträge
 
#10

Re: Nochmal Pong ;-)

  Alt 11. Mai 2007, 21:23
Zitat von .chicken:
Aso, jetzt versteh ich wie du meinst, nein also bei mir ises so, dass der Ball sich auch oberhalb des Paddles bewegen kann.
Achso, dann baust du wohl keinen exakten Pong-Klon? Bei einem solchen würde ich wegen der paar winzigen Flächen oben und unten wirklich nicht zu viele Gedanken machen, das ließe sich exakt nur durch tiefergreifende mathematische Berechnungen lösen.
Sebastian
Moderator in der EE
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:15 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz