Not sure if you want a behavior capturing keystrokes, that's something you pretty much want instant and 100% available.  That's my two cents--if somebody has a better method, lets hear it (always looking for the *right* way to do things)
 
I attached a KeyListener to the 3D canvas, subclassed to mainKeyListener, that picks up "keyTyped", "keyPressed", and "keyReleased" events. I directly update our own avatar movement vectors, and hand off other things (emotes) to a queue that's hanlded in a behavior.
 
In the canvas constructor...
canvas.addKeyListener(new mainKeyListener());
 
 
And later in the canvas class....
 
 
class mainKeyListener implements KeyListener {
 public void keyTyped(java.awt.event.KeyEvent keyEvent){

  if (keyEvent.getKeyChar()=='f' || keyEvent.getKeyChar()=='F'){
   ourPlayer.setLightEnable(!ourPlayer.getLightEnable());
   addMessage("Settings: Player Torch: " + ourPlayer.getLightEnable());
  }
 
    
  if (keyEvent.getKeyChar()=='o' || keyEvent.getKeyChar()=='O'){
   showGameStats();
  }
 
  }
 
  //System.out.println(keyEvent.getKeyChar());
 }
 
 
 
 public void keyPressed(java.awt.event.KeyEvent keyEvent){
 

  if (keyEvent.getKeyChar()=='a' || keyEvent.getKeyChar()=='A'){
   controlCamOut=true;
 
  }else if (keyEvent.getKeyChar()=='z' || keyEvent.getKeyChar()=='Z'){
   controlCamIn=true;
 
  }else if (keyEvent.getKeyChar()=='s' || keyEvent.getKeyChar()=='S'){
   controlCamUp=true;
 
  }else if (keyEvent.getKeyChar()=='x' || keyEvent.getKeyChar()=='X'){
   controlCamDown=true;
 
  }else if (keyEvent.getKeyChar()=='r' || keyEvent.getKeyChar()=='R'){
   controlForward=true;
   }

  }
 

  //return;
 }
    
 public void keyReleased(java.awt.event.KeyEvent keyEvent) {
  if (keyEvent.getKeyChar()=='a' || keyEvent.getKeyChar()=='A'){
   controlCamOut=false;
 
  }else if (keyEvent.getKeyChar()=='z' || keyEvent.getKeyChar()=='Z'){
   controlCamIn=false;
 
  }else if (keyEvent.getKeyChar()=='s' || keyEvent.getKeyChar()=='S'){
   controlCamUp=false;
 
  }else if (keyEvent.getKeyChar()=='x' || keyEvent.getKeyChar()=='X'){
   controlCamDown=false;

  }
       
 }
}
-----Original Message-----
From: bh ahn [mailto:[EMAIL PROTECTED]]
Sent: Tuesday, May 14, 2002 5:09 AM
To: [EMAIL PROTECTED]
Subject: [JAVA3D] user interactive 3D avatar animation

hi all
 
I would try to make a progarm that is user interactive 3D avatar animaion.
 
first,  In interactive part  I would use Behavior class.  For detail, I would use Behavior class with WakeUpAWTEvent to catch key pressed event
 
That key pressed event is specific key like, 'A' key or 'B' key...
 
And then implement animation using Interpolator class like PathInterpolate.
 
Filnal version of that program is user interactive 3D avatar animation, for example  press 'A' key then animate one action....
 
What shall i do for this program?
 
please give some advice. ;)
 
thanks
 
 

Reply via email to