Mahlzeit,
zuerst einmal hoffe ich dass ich das Thame hier richtig poste (wenn nicht bitte verschieben).
Dieses Forum hat mir schon sehr oft geholfen als ich mein 2D Spiel geschrieben habe (Art Zelda), da dieses Projekt erfolgreich abgeschlossen ist wollte ich nun mit 3D anfangen.. Ich habe mir schon zahlreiche PDF's und Tutorials zum Thema durchgelesen aber finde nirgends etwas passendes zu meinem Problem
Komm ich nun zu meinen 2 kleinen Problem:
1.) Wenn ich den untenstehenden Code ausführe bekomme ich immer 2 Fenster (JPanel und Canvas) Wie füge ich beide zusammen?
2.) (Ergibt sich vllt. schon aus der Lösung zu1.)) Sinn des ganzen ist es mit den Tasten (W,A,S,D...) die Kamera zu bewegen, um somit ein Firstperson Spiel zu realisieren.
Nun will ich ja nicht unbedingt das Rad neu erfinden.. Vllt. kann mir ja jemand helfen oder kennt ein Tutorial was ich übersehen habe, am besten noch mit mouse interaction, da dies natürlich als Steuerung für ein Spiel als nächstes rein kommen würde. Schon mal danke im vorraus.
zuerst einmal hoffe ich dass ich das Thame hier richtig poste (wenn nicht bitte verschieben).
Dieses Forum hat mir schon sehr oft geholfen als ich mein 2D Spiel geschrieben habe (Art Zelda), da dieses Projekt erfolgreich abgeschlossen ist wollte ich nun mit 3D anfangen.. Ich habe mir schon zahlreiche PDF's und Tutorials zum Thema durchgelesen aber finde nirgends etwas passendes zu meinem Problem
Komm ich nun zu meinen 2 kleinen Problem:
1.) Wenn ich den untenstehenden Code ausführe bekomme ich immer 2 Fenster (JPanel und Canvas) Wie füge ich beide zusammen?
2.) (Ergibt sich vllt. schon aus der Lösung zu1.)) Sinn des ganzen ist es mit den Tasten (W,A,S,D...) die Kamera zu bewegen, um somit ein Firstperson Spiel zu realisieren.
Java:
import java.awt.*;
import java.awt.event.*;
import javax.media.j3d.*;
import javax.swing.*;
import javax.vecmath.*;
import com.sun.j3d.utils.geometry.Box;
import com.sun.j3d.utils.universe.SimpleUniverse;
public class Main extends JFrame implements KeyListener {
int kameraX=0;
int kameraY=0;
public int getKameraX() {
return kameraX;
}
public void setKameraX(int Kx) {
this.kameraX = Kx;
}
public Main() {
super("TITEL");
JPanel p = new JPanel();
add(p);
addKeyListener(this);
Dimension dim = Toolkit.getDefaultToolkit().getScreenSize();
setSize((int)dim.getWidth(), (int)dim.getHeight());
setVisible(true);
SimpleUniverse universe = new SimpleUniverse();
BranchGroup group = new BranchGroup();
//Boden erzeugen
Transform3D transform = new Transform3D();
Box boden = new Box(1.0f, 0.01f, 1.0f, null);
transform.setTranslation(new Vector3f( 0f, 0f, 0f));
//Licht
Color3f light1Color = new Color3f(.1f, 1.4f, .1f); //Farbe
BoundingSphere bounds = new BoundingSphere(new Point3d(0.0, 0.0, 0.0), 100.0); //Kugel (x,y,z,r)
Vector3f light1Direction = new Vector3f(4.0f, -7.0f, -12.0f); //Richtung aus der das Licht kommt
DirectionalLight licht = new DirectionalLight(light1Color, light1Direction);
licht.setInfluencingBounds(bounds);
universe.getViewingPlatform().setNominalViewingTransform();
//Kamera
Transform3D trNew = new Transform3D();
trNew.setTranslation(new Vector3d(kameraX, kameraY, 0));
universe.getViewingPlatform().getViewPlatformTransform().setTransform(trNew);
group.addChild(boden);
group.addChild(licht);
universe.addBranchGraph(group);
}
@Override
public void keyTyped(KeyEvent e) {
}
@Override
public void keyPressed(KeyEvent e) {
if (e.getKeyCode() == KeyEvent.VK_W) {
System.out.println("w");
kameraX+=1;
System.out.println(kameraX);
}
if (e.getKeyCode() == KeyEvent.VK_A) {
System.out.println("a");
}
if (e.getKeyCode() == KeyEvent.VK_S) {
System.out.println("s");
kameraX-=1;
System.out.println(kameraX);
}
if (e.getKeyCode() == KeyEvent.VK_D) {
System.out.println("d");
}
}
@Override
public void keyReleased(KeyEvent e) {
}
public static void main(String[] args) {
new Main();
}
}
Nun will ich ja nicht unbedingt das Rad neu erfinden.. Vllt. kann mir ja jemand helfen oder kennt ein Tutorial was ich übersehen habe, am besten noch mit mouse interaction, da dies natürlich als Steuerung für ein Spiel als nächstes rein kommen würde. Schon mal danke im vorraus.