um eigene Achse drehen

  • Themenstarter Themenstarter Manni0001
  • Beginndatum Beginndatum
Status
Nicht offen für weitere Antworten.
M

Manni0001

Gast
Hallo ich habe ein großes Problem,

ich will mit der Tastatur Pfeiltasten
VK_LEFT soll der Gegenstand sich links um seine Achse drehen,
VK_RIGHT soll der Gegenstand sich rechts um seine Achse drehen.
bei meinem Code verschiebe ich den gegenstand nach links oder rechts.

Was mache ich falsch??

Code:
               while(criteria.hasMoreElements()) {
                        ev = (WakeupOnAWTEvent)criteria.nextElement();
                        AWTEv = ev.getAWTEvent();
                        for(i = 0; i < AWTEv.length; i++) {
                                KeyEv = (KeyEvent)AWTEv[i];
                                transformGroup.getTransform(trans);
                                tempTrans.setIdentity();
                                if(KeyEv.getKeyCode() == KeyEvent.VK_UP) tempTrans.setTranslation(new Vector3f(0.0f, -0.1f, 0f));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_DOWN) tempTrans.setTranslation(new Vector3f(0.0f, 1.0f, 0.0f));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_LEFT) tempTrans.rotY(Math.toRadians(-1));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_RIGHT) tempTrans.rotY(Math.toRadians(1));

                                trans.mul(tempTrans);
                                transformGroup.setTransform(trans);
                        }
                }
                wakeupOn(criterion);

Gruß Manni
 
Hallo,

es geht doch nur darum,

Code:
else if(KeyEv.getKeyCode() == KeyEvent.VK_LEFT) tempTrans.rotY(Math.toRadians(-1));  // hier soll sich der 
Gegenstand um seine eigene Achse drehen aber Anstatt verschiebt es sich nach Links  
else if(KeyEv.getKeyCode() == KeyEvent.VK_RIGHT) tempTrans.rotY(Math.toRadians(1)); // hier soll sich der 
Gegenstand um seine eigene Achse drehen aber Anstatt verschiebt es sich nach Rechts

also muß der Fehler an dieser stelle sein "Math.toRadians(-1)" aber ich weis nicht was ich ändern könnte.


den rest Code findest du hier

http://www.java-forum.org/de/topic51114_transformgroup-position.html



Code:
class KeyBehavior extends Behavior {
        private TransformGroup transformGroup;
        private Transform3D trans = new Transform3D(), tempTrans = new Transform3D();
        private WakeupCriterion criterion;
        private int i =  0;

        public KeyBehavior( TransformGroup tg) {
                transformGroup = tg;
        }

        public void initialize() {
                criterion = new WakeupOnAWTEvent(KeyEvent.KEY_PRESSED);
                wakeupOn(criterion);
        }

        public void processStimulus(Enumeration criteria) {
                WakeupOnAWTEvent ev;
                AWTEvent AWTEv[];
                KeyEvent KeyEv;

                while(criteria.hasMoreElements()) {
                        ev = (WakeupOnAWTEvent)criteria.nextElement();
                        AWTEv = ev.getAWTEvent();
                        for(i = 0; i < AWTEv.length; i++) {
                                KeyEv = (KeyEvent)AWTEv[i];
                                transformGroup.getTransform(trans);
                                tempTrans.setIdentity();
                                if(KeyEv.getKeyCode() == KeyEvent.VK_UP) tempTrans.setTranslation(new Vector3f(0.0f, -0.1f, 0f));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_DOWN) tempTrans.setTranslation(new Vector3f(0.0f, 1.0f, 0.0f));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_LEFT) tempTrans.rotY(Math.toRadians(-1));
                                else if(KeyEv.getKeyCode() == KeyEvent.VK_RIGHT) tempTrans.rotY(Math.toRadians(1));

                                trans.mul(tempTrans);
                                transformGroup.setTransform(trans);
                        }
                }
                wakeupOn(criterion);
        }
}

danke Manni
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben