diff options
| author | Florian Fischer <florian.fischer@muhq.space> | 2026-04-17 20:44:47 +0200 |
|---|---|---|
| committer | Florian Fischer <florian.fischer@muhq.space> | 2026-04-17 20:44:47 +0200 |
| commit | c38d85decda449be5b7e557f6052d8ed3bd41cdc (patch) | |
| tree | 31982e5432272788f945951cae587b31b44bf552 /Info/10/2/JumpNRun/arbeitsauftrag2.tex | |
| parent | 102ab3bede6592dff2771fe5d818d0837f5d3308 (diff) | |
| download | unterricht-c38d85decda449be5b7e557f6052d8ed3bd41cdc.tar.gz unterricht-c38d85decda449be5b7e557f6052d8ed3bd41cdc.zip | |
significantly improve jumpnrun material
* mention combining of collision detection and handling
* specify the need to cast to InteractiveElement
Diffstat (limited to 'Info/10/2/JumpNRun/arbeitsauftrag2.tex')
| -rw-r--r-- | Info/10/2/JumpNRun/arbeitsauftrag2.tex | 29 |
1 files changed, 27 insertions, 2 deletions
diff --git a/Info/10/2/JumpNRun/arbeitsauftrag2.tex b/Info/10/2/JumpNRun/arbeitsauftrag2.tex index d09cc882..65175949 100644 --- a/Info/10/2/JumpNRun/arbeitsauftrag2.tex +++ b/Info/10/2/JumpNRun/arbeitsauftrag2.tex @@ -87,6 +87,7 @@ für alle Objekte \end{defbox} Die Methode \mintinline{java}{getCollidingShapes(Group g)} eines Sprites gibt alle Objekte einer Gruppe \texttt{g} zurück, die mit dem \texttt{Sprite} kollidieren. +\label{subsection:collision-detection} Mit der \texttt{foreach}-Variante der \texttt{for}-Schleife können wir alle Kollisionen behandeln. @@ -108,6 +109,7 @@ Implementiere in der \mintinline{java}{void act()} des Spielers die Kollisionser \end{itemize} \subsection{\faIcon{desktop} Kollision behandeln} +\label{subsection:collision-handling} \begin{defbox}{Kollision was jetzt?} \begin{tabular}{p{0.37\textwidth} p{0.6\textwidth}} @@ -140,16 +142,39 @@ Implementiere im Spieler die Methode \mintinline{java}{void reactToCollisionWith \item Wiederholung die letzte Bewegung in die Richtung, die \emph{nicht} zur Kollision führt. \end{itemize} +\subsection*{\faIcon{desktop} Kollision erkennen \emph{und} behandeln} + +Der folgende Pseudocode beschreibt das Zusammenspiel der Erkennung von Kollision und ihrer anschließenden Behandlung. + +\begin{pseudocode} +\texttt{für alle überschneidenden Objekte} + +\hspace{5mm}\texttt{behandle Überschneidung} +\end{pseudocode} + +Wir wollen also unsere \textbf{Kollisionserkennung} \mintinline{java}{getCollidingShapes(Group group)} (Siehe: \ref{subsection:collision-detection}) mit unserer \textbf{Kollisionsbehandlung} \mintinline{java}{reactToCollisionWithShape(Shape shape)} (Siehe: \ref{subsection:collision-handling}) verbinden. + +\vspace{3mm} +\begin{center} +\textbf{Kollisionserkennung} \hspace{5mm} \faIcon{link} \hspace{5mm} \textbf{Kollisionsbehandlung} +\end{center} +\vspace{3mm} + +\begin{itemize} + \item Rufe mit \emph{jedem} kollidierenden Shape in \texttt{collidingShapes} die Methode \mintinline{java}{reactToCollisionWithShape} auf. +\end{itemize} + + \subsection{\faIcon{desktop} Auf dem Boden stehen} Bei Kollision \textbf{von oben} wollen wir erkennen, das wir auf festem Boden stehen! -Das erlaubt uns abzuspringen und gegebenenfalls eine Laufanimation anzuzeigen. +Das erlaubt Gravitation wirken zu lassen, abzuspringen und gegebenenfalls eine Laufanimation anzuzeigen. Das Attribut \mintinline{java}{Shape standsOn} der Klasse \texttt{Player} merkt sich auf welchem Shape der Spieler steht. \begin{itemize} \item (Ergänze das \texttt{standsOn} Attribut vom Typ \texttt{Shape} in der Klasse \texttt{Player}) -\item (Ändere die Gravitation zu einer Prüfung \mintinline{java}{standsOn == null}) +\item (Ändere die Prüfung, ob Gravitation wirkt zu: \mintinline{java}{standsOn == null}) \item Bei Kollision von \emph{oben}, speichere das kollidierende \texttt{shape} im Attribut \texttt{standsOn}. \item Überprüfe vor der Kollisionserkennung, ob der Spieler noch mit einem möglicherweise gespeicherten \texttt{standsOn} Objekt kollidiert. (\mintinline{java}{standOn != null && !collidesWith(standsOn)}) \item \emph{Falls nein} setze \texttt{standOn} auf \mintinline{java}{null} |
