# Kollision in Java3D



## Creativ (18. Mai 2008)

Hi,
Das alte Problem hat sich erledigt, aber jetzt habe ich ein anderes Problem.
Und zwar kann man inzwischen mit der Person durch die Gegend laufen und es existieren Wände.
Aber man kann noch durch die Wände laufen.

Die Person kann man mit der Tastatur steuern und es gibt dazu ein Behavior welches auf die Tastatureingaben reagiert.
Bei jeden Tastendruck wird der x und der z Wert der Person verändert.

Jetzt kann ich natürlich noch ein WakeupOnCollisionEntry-Event hinzufügen, aber wie kann ich dann machen, dass man nicht weitergehen kann.
Ich könnte ja eine Boolean-Variable auf true setzen und dann beim bewegen kontrollieren ob sie true ist und nur dann die Person bewegen.
Und wenn man gegen eine Wand läuft setze ich die Variable auf false, aber dann könnte man ja nicht mehr weg kommen und man würde da festhängen.

Habt ihr einen Vorschlag, wie man das geschickt lösen könnte?

Gruß,
Dennis


----------



## 0x7F800000 (20. Mai 2008)

Hört sich alles so an, als müsste der leser des Beitrages schon wissen worum es überhaupt geht. 
Ich habe keinen blassen Schimmer Ahnung, was den Aufbau deines Programms angeht, könntest du mal hier einen Link zu deinem letzten beitrag posten, auf dem das alles hier aufbaut?  ???:L


----------



## pyr0t0n (20. Mai 2008)

@TE

theoretisch könntest du für alle 4 richtungen eine Boolean Variable festlegen so könntest du ja sagen wenn links eine wand ist setze die boolean variable links auf false.

Somit kannst du ja noch prüfen wenn rechts gedrückt wurde und rechts weiterhin true ist kann ich noch in diese richtung laufen.


----------



## Creativ (21. Mai 2008)

Hi,
Habe es jetzt anders gemacht.
Wenn WakeupOnCollisionEntry aufgerufen wird, speicher ich die letzten x/y/z-Werte.
Und sobald dann WakeupOnCollisionMovement aufgerufen wird, setzte ich die alten Werte, also die, die ich bei WakeupOnCollisionEntry gespeichert habe, wieder ein.
Funktioniert jetzt damit.  

Habe jetzt aber ein anderes Problem.
Und zwar wollte ich noch einen Text3D einfügen. Habe das folgendermaßen gemacht:

```
Font3D font3d = new Font3D(new Font("Arial",Font.PLAIN,1),new FontExtrusion());
        Text3D textGeom = new Text3D(font3d,"Text");
        textGeom.setAlignment(Text3D.ALIGN_CENTER);
        Shape3D textShape = new Shape3D(textGeom);
```

Das funktioniert auch soweit, nur die Schrift ist viel zu groß, obwohl ich ja nur eine Schriftgröße von 1 habe.

Habt ihr eine Idee, wie ich die Schrift noch verkleinern kann?

Gruß,
Dennis


----------



## optimusprime1982 (26. Mai 2008)

ja, skalier das zeug mit transform3d.scale


----------

