Für all diejenen unter euch, die meine noch ersten Threads in diesem Forum kennen, werdet ihr euch sicherlich noch an meine Fragen über Collisionen erinnern, nun ist es so lang her, und ich hab immer noch keine schöne Lösung, kann mir einer von euch,
das folgende Programm, mit folgenden Angaben, modifiziert zurückposten please?
-es soll wenn sich 'ViewBounds' und 'BoxBounds' treffen, man sich nur noch so bewegen können, dass man von diesen 'BoxBounds' wegkommt.
-es soll wenn man bei den BoxBounds ist, auch was ausgegeben werden, und zwar : 'Collision!'
Ich danke jedem für seine Antwort, denn ich habe schon sehr lange damit zu tun, kau dran rum, und hab immer noch keine lösung...
Thanks at all,
das folgende Programm, mit folgenden Angaben, modifiziert zurückposten please?
-es soll wenn sich 'ViewBounds' und 'BoxBounds' treffen, man sich nur noch so bewegen können, dass man von diesen 'BoxBounds' wegkommt.
-es soll wenn man bei den BoxBounds ist, auch was ausgegeben werden, und zwar : 'Collision!'
Java:
package Programms;
import java.awt.BorderLayout;
import java.awt.GraphicsConfiguration;
import java.awt.event.*;
import javax.media.j3d.AmbientLight;
import javax.media.j3d.BoundingSphere;
import javax.media.j3d.BranchGroup;
import javax.media.j3d.Canvas3D;
import javax.media.j3d.DirectionalLight;
import javax.media.j3d.Transform3D;
import javax.media.j3d.TransformGroup;
import javax.swing.JFrame;
import javax.vecmath.Color3f;
import javax.vecmath.Point3d;
import javax.vecmath.Vector3f;
import com.sun.j3d.utils.geometry.ColorCube;
import com.sun.j3d.utils.universe.SimpleUniverse;
@SuppressWarnings("serial")
public class CollisionTest extends JFrame implements KeyListener
{
float step = 1;
SimpleUniverse universe;
Canvas3D canvas3D;
float y;
float z;
Transform3D view;
TransformGroup View;
BoundingSphere ViewBounds= new BoundingSphere(new Point3d(), 1);
BoundingSphere BoxBounds = new BoundingSphere(new Point3d(), 1);
public CollisionTest()
{
this.setTitle("CollisionTest");
this.setSize(400,400);
this.setLocationRelativeTo(null);
this.setLayout(new BorderLayout());
GraphicsConfiguration config = SimpleUniverse.getPreferredConfiguration();
canvas3D = new Canvas3D(config);
universe = new SimpleUniverse(canvas3D);
universe.addBranchGraph(Scene());
this.add("Center", canvas3D);
canvas3D.addKeyListener(this);
this.setVisible(true);
}
public BranchGroup Scene()
{
BranchGroup X = new BranchGroup();
//View Initialisation
view = new Transform3D();
view.rotY(Math.toRadians(y));
view.setTranslation(new Vector3f(0,0,z));
View = new TransformGroup();
View.setTransform(view);
View.setBounds(ViewBounds);
View = universe.getViewingPlatform().getViewPlatformTransform();
//Box Initialisation
Transform3D boxt = new Transform3D();
boxt.setTranslation(new Vector3f(0,0,0));
TransformGroup BoxT = new TransformGroup();
BoxT.setTransform(boxt);
BoxT.addChild(new ColorCube(1));
BoxT.setBounds(BoxBounds);
X.addChild(BoxT);
//Rest of Lights
Color3f lightColor = new Color3f(.1f,.6f,.6f);
AmbientLight ambientLight= new AmbientLight(lightColor);
ambientLight.setInfluencingBounds(new BoundingSphere());
X.addChild(ambientLight);
DirectionalLight directionalLight = new DirectionalLight();
directionalLight.setColor(lightColor);
directionalLight.setInfluencingBounds(new BoundingSphere());
X.addChild(directionalLight);
X.compile();
return X;
}
public static void main(String[]args)
{
new CollisionTest();
}
public void keyPressed(KeyEvent arg0)
{
if(arg0.getKeyCode()==KeyEvent.VK_UP)
{
z = z - step;
view.setTranslation(new Vector3f(y,0,z));
View.setTransform(view);
System.out.println(view);
}
if(arg0.getKeyCode()==KeyEvent.VK_DOWN)
{
z = z + step;
view.setTranslation(new Vector3f(y,0,z));
View.setTransform(view);
System.out.println(view);
}
if(arg0.getKeyCode()==KeyEvent.VK_LEFT)
{
y = y + step;
view.setTranslation(new Vector3f(y,0,z));
View.setTransform(view);
System.out.println(view);
}
if(arg0.getKeyCode()==KeyEvent.VK_RIGHT)
{
y = y - step;
view.setTranslation(new Vector3f(y,0,z));
View.setTransform(view);
System.out.println(view);
}
}
public void keyReleased(KeyEvent arg0) {}
public void keyTyped(KeyEvent arg0) {}
}
Ich danke jedem für seine Antwort, denn ich habe schon sehr lange damit zu tun, kau dran rum, und hab immer noch keine lösung...
Thanks at all,