Hi bernii,
|
Java Code:
1
2
3
4
5
6
7
8
9
10
11
| //Springen
radius += z_speed;
if(radius < 5)
{
z_speed *= -1;
}
if(radius > 11)
{
z_speed *= -1;
} |
|
|
|
|
|
Was ist das denn?
Die Z-Position sollte meiner Meinung nach erst bei der Renderung der Szene umgerechnet werden, also etwa so:
Java Code:
1
2
| double zradius = radius + (z_pos / 2.); // Die Position auf der Z-Achse wird mit in den Radius eingerechnet (==> Tiefe)
g.fillOval((int) (x_pos - (zradius / 2.)), (int) (y_pos - (zradius / 2.)), (int) zradius, (int) zradius); |
Zu deinem Plattenproblem:
Ich würde eine Klasse Platte machen, die zwei Rectangle-Objekte behinhaltet. Für jede Platte eine.
Dann würde ich eine Methode tellPosition oder so machen, die du bei jeder Ballbewegung aufrufst.
In dieser Methode prüst du dann einfach ab, auf welcher Seite der Platte sich der Ball befindet (Rectangle.contains[...]) und prüst dann, ob die Z-Position des Balles kleiner oder gleich der Z-Position der Platte ist. Wenn dass der Fall ist, so wird eine Methode "tellHit" aufgerufen die dann den "Aufschlag" des Balles auf der entsprechenden Plattenhälfte handelt. Die Platte, auf der sich der Ball befindet kannst du ja als Parameter übergeben.
Den Ball würde ich ebenfalls als eigenes Objekt definieren.
PS: Netz nicht vergessen
Gruß
Steev