egohandler.java
来自「一个JAVA程序员的游戏」· Java 代码 · 共 115 行
JAVA
115 行
/*
* Ego.java
*
* Created on 9. Dezember 2006, 18:31
*
* To change this template, choose Tools | Template Manager
* and open the template in the editor.
*/
package kanjitori.action;
import com.jme.bounding.BoundingBox;
import com.jme.input.InputHandler;
import com.jme.input.KeyBindingManager;
import com.jme.input.KeyInput;
import com.jme.input.RelativeMouse;
import com.jme.input.action.InputAction;
import com.jme.math.Vector3f;
import com.jme.renderer.Camera;
import com.jme.scene.CameraNode;
import com.jme.scene.Node;
import com.jme.scene.Skybox;
import com.jme.scene.shape.Box;
import com.jme.system.DisplaySystem;
import kanjitori.*;
import java.awt.Point;
import kanjitori.graphics.item.Item;
import kanjitori.preferences.GamePreferences;
import kanjitori.preferences.KeyMap;
/**
*
* @author Pirx
*/
public class EgoHandler extends InputHandler {
public final static int MOVE_FORWARD = 0;
public final static int MOVE_LEFT = 1;
public final static int MOVE_BACKWARD = 2;
public final static int MOVE_RIGHT = 3;
public final static int MOVE_TURN_LEFT = 4;
public final static int MOVE_TURN_RIGHT = 5;
public final static int MOVE_TURN_UP = 6;
public final static int MOVE_TURN_DOWN = 7;
private final static String FORWARD = "forward";
private final static String BACKWARD = "backward";
private final static String STRAFE_LEFT = "strafeLeft";
private final static String STRAFE_RIGHT = "strafeRight";
private final static String TURN_LEFT = "turnLeft";
private final static String TURN_RIGHT = "turnRight";
private final static String TURN_UP = "turnUp";
private final static String TURN_DOWN = "turnDown";
private final static String TELEPORT = "teleport";
private final static String DEF_CHANGE = "defChange";
private float moveSpeed = 5;
private float rotSpeed = 5;
private InputAction[] move = new InputAction[8];
/** Creates a new instance of Ego */
public EgoHandler(KeyMap keyMap) {
initKeyBindings(keyMap);
initMouseBindings(keyMap.isMouseInverted());
}
private void initKeyBindings(KeyMap keyMap) {
KeyBindingManager keyboard = KeyBindingManager.getKeyBindingManager();
for (int k = 0; k < KeyMap.KEY_INPUT.length; k++) {
String action = keyMap.getAction(KeyMap.KEY_INPUT[k]);
if (action != null) {
keyboard.add(action, KeyMap.KEY_INPUT[k]);
}
}
Node playerNode = Player.getPlayer().getNode();
CameraNode camNode = Player.getPlayer().getCamNode();
move[MOVE_FORWARD] = new MoveAction(playerNode, moveSpeed, MoveAction.Direction.FORWARD);
move[MOVE_BACKWARD] = new MoveAction(playerNode, moveSpeed, MoveAction.Direction.BACKWARD);
move[MOVE_LEFT] = new MoveAction(playerNode, moveSpeed, MoveAction.Direction.LEFT);
move[MOVE_RIGHT] = new MoveAction(playerNode, moveSpeed, MoveAction.Direction.RIGHT);
move[MOVE_TURN_LEFT] = new RotateAction(camNode, rotSpeed, RotateAction.Direction.LEFT);
move[MOVE_TURN_RIGHT] = new RotateAction(camNode, rotSpeed, RotateAction.Direction.RIGHT);
move[MOVE_TURN_UP] = new RotateAction(camNode, rotSpeed, RotateAction.Direction.UP);
move[MOVE_TURN_DOWN] = new RotateAction(camNode, rotSpeed, RotateAction.Direction.DOWN);
addAction(move[MOVE_FORWARD], FORWARD, true );
addAction(move[MOVE_FORWARD], DEVICE_MOUSE, 1, AXIS_NONE, true );
addAction(move[MOVE_BACKWARD], BACKWARD, true );
addAction(move[MOVE_LEFT], STRAFE_LEFT, true );
addAction(move[MOVE_RIGHT], STRAFE_RIGHT, true );
addAction(move[MOVE_TURN_LEFT], TURN_LEFT, true );
addAction(move[MOVE_TURN_RIGHT], TURN_RIGHT, true );
addAction(move[MOVE_TURN_UP], TURN_UP, true );
addAction(move[MOVE_TURN_DOWN], TURN_DOWN, true );
addAction(new ItemAction(Item.Type.TELEPORT), TELEPORT, false);
addAction(new ItemAction(Item.Type.DEF_CHANGE), DEF_CHANGE, false);
}
private void initMouseBindings(boolean invertMouse) {
RelativeMouse mouse = new RelativeMouse("Mouse Input");
mouse.registerWithInputHandler( this );
CameraNode camNode = Player.getPlayer().getCamNode();
MouseAction mouseAction = new MouseAction(mouse, camNode, rotSpeed/4, invertMouse);
addAction(mouseAction);
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?