Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

15.05.2017, 10:56

Pong - Zielpunkt berechnen?

Guten Tag, 8)

bin gerade dabei, das Spiel Pong zu erstellen.
An sich alles ganz einfach, aber ich wollte noch
eine KI einbauen.

Diese soll den Zielpunkt(Y) berechnen, wo der Ball auf
der Seite des Bots ankommen würde.

Ich habe hier mal ein Beispiel gemacht:

(Link)


Weiß jemand die Berechnung dafür oder wie die heißt? :D

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

15.05.2017, 11:15

Geradengleichung.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Jar

Treue Seele

Beiträge: 197

Wohnort: Lübeck

Beruf: Softwareentwickler

  • Private Nachricht senden

3

15.05.2017, 13:26

Werfen wir hier einfach Begriffe in den Thread?

Dann... Satz des Pythagoras.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

15.05.2017, 13:43

Er hat gefragt, ob jemand eine Berechnung kennt und wie die heißt. Sie heißt Geradengleichung. Ist nicht auf meinem Mist gewachsen.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

Squareys

Frischling

Beiträge: 35

Wohnort: Konstanz

Beruf: VR Development Lead bei Vhite Rabbit.

  • Private Nachricht senden

5

15.05.2017, 14:40

Satz des Pythagoras geht zwar schon auch (keine Ahnung, ob das ernst gemeint war), aber ich finde, dass BlueCobold mit Geradengleichung die (um Vieles) einfachere Lösung hat ;)

Wenn Du die Geradengleichung hast, musst Du nur noch den y Wert für die linke bzw. rechte Seite ermitteln. Wenn Der Wert außerhalb der Screen-höhe liegt, musst Du den Wert je nach dem wo dein Nullpunkt liegen soll nochmal spiegeln (*-1) oder die Höhe abziehen.

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

6

16.05.2017, 10:36

Satz des Pythagoras ist doch voelliger Quatsch? Was soll man damit in dem Fall berechnen koennen? Es ist weder die Distanz zum Endpunkt (c) noch der Weg auf x oder y-Achse (a und b) bekannt. Eine Gleichung mit 3 unbekannten Variablen ist da jetzt nicht wirklich hilfreich. Wenn man schon Begriffe reinruft, dann doch bitte sinnvolle.

Squareys

Frischling

Beiträge: 35

Wohnort: Konstanz

Beruf: VR Development Lead bei Vhite Rabbit.

  • Private Nachricht senden

7

16.05.2017, 11:51

> Satz des Pythagoras ist doch voelliger Quatsch?

@TGGC Für diesen Fall (und angenommen Nullpunkt ist links unten):

a = screenW - ballX // Weg auf der X achse
ZielpunktY = ballY + sqrt((cos(45°)*a)² - a²)

Also "völliger" Quatsch ist es nicht, bin mir aber sicher, dass @Jar da nicht dran gedacht hat, als er das reingeschrieben hat. :P Und den Code versteht dann keiner mehr. Mit sin und sqrt ist das sogar eine super ineffiziente Lösung, viel umständlicher kann mans wahrscheinlich nicht machen.


PS: @xSunLighTx3 das ist wie gesagt keine gute Lösung, versuchs lieber mit BlueCobolds Vorschlag, da kommst Du auf eine verständlichere Lösung.

Schorsch

Supermoderator

Beiträge: 5 145

Wohnort: Wickede

Beruf: Softwareentwickler

  • Private Nachricht senden

8

16.05.2017, 12:06

a = screenW - ballX // Weg auf der X achse
ZielpunktY = ballY + sqrt((cos(45°)*a)² - a²)

Der Ball kann normalerweise am oberen und unteren Rand abprallen und wechselt dann seien Flugrichtung auf der Y-Achse. Genau da liegt ja hier der Knackpunkt.
„Es ist doch so. Zwei und zwei macht irgendwas, und vier und vier macht irgendwas. Leider nicht dasselbe, dann wär's leicht.
Das ist aber auch schon höhere Mathematik.“

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

16.05.2017, 13:46

Eigentlich ist es egal, ob sie abprallt und wo, denn solange Einfallswinkel = Ausfallswinkel gilt, kann man mit etwas Modulo (und +-) auch errechnen wo der Ball ankommen wird, ohne die Abpraller mit berechnen zu müssen:
- Rot ist die eigentliche Flugbahn des Balls
- Grün ist die gesuchte Höhe z
- H ist die Höhe des Spielfelds
- Nach Geradengleichung bekommt man die rot/graue Flugbahn und mit Modulo H bekommt man die gesuchte Höhe z und die Anzahl der Abpraller bekommt man durch Modulo und Aufrunden, sodass man bei ungerader Anzahl Abpraller eine Korrektur von H-z berechnet statt z (siehe z2 zweites Bild)
»BlueCobold« hat folgende Bilder angehängt:
  • pong.png
  • pong.png
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

TGGC

1x Rätselkönig

Beiträge: 1 799

Beruf: Software Entwickler

  • Private Nachricht senden

10

16.05.2017, 18:04

sqrt((cos(45°)*a)² - a²)

cos(45°) ist ungefaehr 0.7, also:

sqrt((0.7*a)² - a²) = sqrt(0.5*a² - a²) = sqrt(-0.5*a²)
Wurzel einer negativen Zahl, nicht sehr sinnvoll.

Ausserdem kommt die trigonmetrische Funktion (wenn du es richtig gemacht haettest) ueber folgenden Zusammenhang da rein: 1^2=sin^2+cos^2. Das ist auch Satz des Pythagoras. Oder anders gesagt, du berechnest aus a erst c um dann aus c wieder a zu berechnen um das in die Geradengleichung einzusetzen. Anders ausgedrueckt, du hast f und die Umkehrfunktion f' und dann berechnest du nicht g(a) sondern g(f'(f(a))). So kann man natuerlich jedes beliebge f in jede Berechnung einfuegen. Es bringt einen nur nicht voran.

Werbeanzeige