public class Gravitator extends PhysikClient
Ein Gravitator sorgt fuer das Verhalten eines Aktiv-Raum-Objektes in der Physik.
ziel
Constructor and Description |
---|
Gravitator(Raum ziel)
Konstruktor.
|
Modifier and Type | Method and Description |
---|---|
void |
aufloesen()
Diese Methode wird immer dann aufgerufen, wenn ein Client nicht weiter benoetigt wird, und er alle seine Funktionen beenden soll, um die von ihm belegten Ressourcen freizugeben.
|
void |
beeinflussbarSetzen(boolean beeinflussbar)
Setzt, ob das Objekt ab sofort beeinflussbar sein soll.
|
boolean |
bewegen(Vektor v)
Bewegt das Raum-Objekt mithilfe des Gravitators.
|
void |
einfluesseZuruecksetzen()
Setzt alle Einfluesse auf das Client-Objekt zurück.
|
void |
fallReagierbarAnmelden(FallReagierbar f,
int tiefe)
In dieser Methode wird der
FallReagierbar -Listener angemeldet. |
void |
geschwindigkeitHinzunehmen(Vektor geschwindigkeit)
Addiert eine Geschwindigkeit v’ zur aktuellen Geschwindigkeit v.
|
void |
geschwindigkeitSetzen(Vektor geschwindigkeit)
Setzt hart die Geschwindigkeit des Client-Objekts.
|
Vektor |
getForce() |
float |
getLuftwiderstandskoeffizient() |
float |
getMasse() |
void |
impulsHinzunehmen(Vektor impuls)
Berechnet einen neuen Impuls auf das Client-Objekt.
|
boolean |
istBeeinflussbar() |
void |
kraftAnwenden(Vektor kraft,
float t_kraftuebertrag)
Wendet eine Kraft für einen bestimmten Zeitraum auf das Client-Objekt an.
|
void |
kraftSetzen(Vektor kraft)
Setzt hart die konstante Kraft, die auf das Client-Objekt wirkt.
|
void |
kritischeTiefeSetzen(int tiefe)
Diese Methode setzt die kritische Tiefe eines Aktiv-Objektes.
|
void |
luftwiderstandskoeffizientSetzen(float luftwiderstandskoeffizient)
Setzt den Luftwiderstandskoeffizienten für das Client-Objekt.
|
void |
masseSetzen(float masse)
Setzt die Masse des Clien-Objekts neu.
|
void |
schwerkraftAktivSetzen(boolean aktiv)
Setzt, ob das Ziel-Objekt von der Schwerkraft beeinflusst wird und somit fallen, aber auch springen kann.
|
void |
schwerkraftSetzen(int schwerkraft)
Setzt die Schwerkraft fuer dieses Objekt.
|
boolean |
sprung(int kraft)
Laesst das anliegende Raum-Objekt springen.
|
void |
stehReagierbarAnmelden(StehReagierbar s)
In dieser Methode wird der
StehReagierbar -Listener angemeldet. |
boolean |
steht()
Testet, ob das hieran anliegende Ziel-Objekt steht.
|
void |
tick(int runde)
Methode zur Weitergabe eines Rechenschrittes
|
boolean |
xVersch(float dX)
Vollfuehrt portionsweises (in Pixelschritten) Verschieben auf der X-Richtung.
|
boolean |
yVersch(float dY)
Vollfuehrt portionsweises (in Pixelschritten) Verschieben auf der Y-Richtung unter beruecksichtung von SChwerkrafteigenschaften.
|
ziel
public Gravitator(Raum ziel)
Konstruktor.
ziel
- Das Ziel des Gravitators: Dieses Objekt wird von ihm ueberwacht.p
- Die Aktive Physikpublic void tick(int runde)
Methode zur Weitergabe eines Rechenschrittes
runde
- Die Runde (1 - 10)public boolean bewegen(Vektor v)
Bewegt das Raum-Objekt mithilfe des Gravitators.
bewegen
in class PhysikClient
v
- Die Bewegung beschrieben durch einen Vektor.true
, sollte die Bewegung vollfuehrt worden sein, ohne, dass man passiv geblockt wurde. Wurde man in der vollen Ausfuehrung der Bewegung gehindert, ist die Rueckgabe false
.public boolean xVersch(float dX)
Vollfuehrt portionsweises (in Pixelschritten) Verschieben auf der X-Richtung.
dX
- Die X-Aenderung (Delta-X)true
, wenn die Bewegung in X-Richtung ohne Passiv-Block moeglich war, sonst false
.public boolean yVersch(float dY)
Vollfuehrt portionsweises (in Pixelschritten) Verschieben auf der Y-Richtung unter beruecksichtung von SChwerkrafteigenschaften.
dX
- Die Y-Aenderung (Delta-Y)true
, wenn die Bewegung in Y-Richtung ohne Passiv-Block moeglich war, sonst false
.public void aufloesen()
Diese Methode wird immer dann aufgerufen, wenn ein Client nicht weiter benoetigt wird, und er alle seine Funktionen beenden soll, um die von ihm belegten Ressourcen freizugeben.
aufloesen
in class PhysikClient
public boolean sprung(int kraft)
Laesst das anliegende Raum-Objekt springen. Dies ist nur dann möglich, wenn das anliegende Raum-Objekt “steht”. Also, wenn es auf einemm Passiv-Objekt steht.
sprung
in class PhysikClient
kraft
- Die Sprungkraft.true
, wenn erfolgreich gesprungen wurde. In allen anderen Faellen false
.public void schwerkraftAktivSetzen(boolean aktiv)
Setzt, ob das Ziel-Objekt von der Schwerkraft beeinflusst wird und somit fallen, aber auch springen kann.
schwerkraftAktivSetzen
in class PhysikClient
aktiv
- Ist dieser Wert true
, so wird das Ziel-Objekt von Schwerkraft beeinflusst. Ist er false
, dann nicht.public void kritischeTiefeSetzen(int tiefe)
Diese Methode setzt die kritische Tiefe eines Aktiv-Objektes. Ab dieser wird das entsprechende FallReagierbar
-Inteface, das angemeldet wurde, ueber den Fall informiert.
kritischeTiefeSetzen
in class PhysikClient
tiefe
- Die Tiefe, ab der das anliegende FallReagierbar
-Interface informiert werden soll. Als Y-Koordinate.fallReagierbarAnmelden(FallReagierbar, int)
public void fallReagierbarAnmelden(FallReagierbar f, int tiefe)
In dieser Methode wird der FallReagierbar
-Listener angemeldet.
Dieser wird ab sofort immer wieder informiert, solange das Ziel-Raum
-Objekt unterhalb der Toleranzgrenze liegt.
fallReagierbarAnmelden
in class PhysikClient
f
- Das FallReagierbar
-Objekt, das ab sofort im Grenzfall informiert wird.tiefe
- Die kritische Tiefe, ab der das Interface informiert wird.kritischeTiefeSetzen(int tiefe)
public void stehReagierbarAnmelden(StehReagierbar s)
In dieser Methode wird der StehReagierbar
-Listener angemeldet.
Dieser wird ab sofort immer dann einmalig informiert, wenn das Ziel-Raum
-Objekt nach einem Sprung/Fall wieder auf einem Passiv-Objekt steht.
stehReagierbarAnmelden
in class PhysikClient
s
- Das StehReagierbar
-Objekt, das ab sofort immer einmalig informiert wird, wenn das Ziel-Objekt zum Stehen kommt.public boolean steht()
Testet, ob das hieran anliegende Ziel-Objekt steht.
steht
in class PhysikClient
true
, wenn das Ziel-Objekt auf einem Passiv-Objekt steht und somit nicht faellt oder steigt, sonst false
.public void schwerkraftSetzen(int schwerkraft)
Setzt die Schwerkraft fuer dieses Objekt.
Achtung: Standardwert: 4
Groesserer Wert = langsamer Fallen
Kleinerer Wert = schneller Fallen
Negativer Wert : Moege Gott uns allen gnaedig sein…
schwerkraftSetzen
in class PhysikClient
schwerkraft
- Der Wert fuer die Schwerkraft der Physik.Raum.aktivMachen()
public void impulsHinzunehmen(Vektor impuls)
Berechnet einen neuen Impuls auf das Client-Objekt.
impulsHinzunehmen
in class PhysikClient
impuls
- der neue Impuls, der auf das Objekt wirken soll. (in [kg* (m / s)])public void geschwindigkeitHinzunehmen(Vektor geschwindigkeit)
Addiert eine Geschwindigkeit v’ zur aktuellen Geschwindigkeit v. Die neue Geschwindigkeit des Client-Objekts ist damit:
v_neu = v + v’
geschwindigkeitHinzunehmen
in class PhysikClient
geschwindigkeit
- Die neue Geschwindigkeit v’, die zur aktuellen Geschwindigkeit v hinzuaddiert werden soll.(in [m / s])public float getLuftwiderstandskoeffizient()
getLuftwiderstandskoeffizient
in class PhysikClient
public boolean istBeeinflussbar()
istBeeinflussbar
in class PhysikClient
public float getMasse()
getMasse
in class PhysikClient
public Vektor getForce()
getForce
in class PhysikClient
public void luftwiderstandskoeffizientSetzen(float luftwiderstandskoeffizient)
Setzt den Luftwiderstandskoeffizienten für das Client-Objekt. Dieser bestimmt, wie intensiv der Luftwiderstand das Objekt beeinträchtigt. Je höher dieser Wert ist, desto stärker ist der Luftwiderstand. Ist er 0, gibt es keinen Luftwiderstand.
luftwiderstandskoeffizientSetzen
in class PhysikClient
luftwiderstandskoeffizient
- Der Luftwiderstandskoeffizient. Darf nicht kleiner als 0 sein!public void beeinflussbarSetzen(boolean beeinflussbar)
Setzt, ob das Objekt ab sofort beeinflussbar sein soll.
Das bedeutet:
beeinflussbarSetzen
in class PhysikClient
beeinflussbar
- ist dieser Wert true
, ist das Objekt ab sofort beeinflussbar. Sonst ist es nicht beeinflussbar.public void masseSetzen(float masse)
Setzt die Masse des Clien-Objekts neu. Das kann auch mitten im Spiel geändert werden. Die Masse bestimmt zum Beispiel, wie sich das Objekt bei Kollisionen oder einem neuen Impuls verhält.
masseSetzen
in class PhysikClient
masse
- die neue Masse des Client-Objekts.(in [kg])public void kraftSetzen(Vektor kraft)
Setzt hart die konstante Kraft, die auf das Client-Objekt wirkt. Das bedeutet, dass die vorher gegoltene Kraft gelöscht wird ohne Rücksicht auf mögliche Implikationen/Probleme.
kraftSetzen
in class PhysikClient
kraft
- Die neue Kraft, die auf das Client-Objekt wirken soll.(in [m / s^2] = [N])public void geschwindigkeitSetzen(Vektor geschwindigkeit)
Setzt hart die Geschwindigkeit des Client-Objekts. Das bedeutet, dass die vorher gegoltene Geschwindikeit gelöscht wird ohne Rücksicht auf mögliche Implikationen/Probleme.
geschwindigkeitSetzen
in class PhysikClient
geschwindigkeit
- Die neue Geschwindigkeit für das Client-Objekt. (in [m / s])public void einfluesseZuruecksetzen()
Setzt alle Einfluesse auf das Client-Objekt zurück. Dies sind:
einfluesseZuruecksetzen
in class PhysikClient
public void kraftAnwenden(Vektor kraft, float t_kraftuebertrag)
Wendet eine Kraft für einen bestimmten Zeitraum auf das Client-Objekt an. Hierdurch entsteht ein neuer Impuls auf das Objekt, der dessen Geschwindigkeit (und Richtung) ändern kann.
Wichtig: Dies ist eine Heuristik: Die Dauer sein genügend klein und die Kraft konstant, solange sie wirkt. Die rein physikalische Rechnung wäre wesentlich rechenintensiver.
kraftAnwenden
in class PhysikClient
kraft
- Die Kraft, die auf das Objekt anliegen soll. (in [kg* (m / s^2)] = [N])t_kraftuebertrag
- Die Dauer, für die die Kraft auf das Objekt wirkt. (in [s)])