anchor.diff:  .  The `ActionListener` (`onAction()`) lets you reconfigure the input handling for the first-person player, so it takes collision detection into account.
   .  The custom `setUpKeys()` method loads your reconfigured input handlers. They now don't just walk blindly, but calculate the `walkDirection` vector that we need for collision detection.
   .  `simpleUpdate()` uses the `walkDirection` vector and makes the character walk, while taking obstacles and solid walls/floor into account. 
  +
   [source,java]
   ----
   player.setWalkDirection(walkDirection);
  
positive.code:     /** Set up Physics */
      bulletAppState = new BulletAppState();
      stateManager.attach(bulletAppState);
      //bulletAppState.getPhysicsSpace().enableDebug(assetManager);
      
      flyCam.setMoveSpeed(100);
      setUpKeys();
  
negative.code: }
  ----
  
  To try this code, create a `menu:New Project[JME3 > BasicGame]` using the default settings. Paste the sample code over the pregenerated Main.java class. Change the package to '`mygame`' if necessary. Open the `menu:File[Project Properties > Libraries]` and add the `jme3-test-data` library to make certain you have all the files. 
  
  Compile and run the code. You should see a terrain. You can use the WASD keys and the mouse to run up and down the hills.
  
  