📄 cameracontroller.java
字号:
package jmetest.monkeymahjongg.game;
import com.jme.input.controls.GameControl;
import com.jme.input.controls.GameControlManager;
import com.jme.input.controls.binding.KeyboardBinding;
import com.jme.scene.Controller;
import static com.jme.input.KeyInput.*;
import static com.jme.math.FastMath.clamp;
import static jmetest.monkeymahjongg.game.CameraController.Direction.*;
/**
*
* @author Pirx
*/
class CameraController extends Controller {
private static final long serialVersionUID = 1L;
enum Direction {LEFT, RIGHT, UP, DOWN, FORWARD, BACK};
private final static float MIN_ANGLE = 1.2f;
private final static float MIN_DISTANCE = 35f;
private final static float MAX_DISTANCE = 150f;
private final static float SPEED = 2f;
private final GameControlManager manager = new GameControlManager();
private final CameraGameState gameState;
private float vAngle = 0;
private float hAngle = 0;
private float distance = 100;
public CameraController(CameraGameState gameState) {
this.gameState = gameState;
bind(LEFT, KEY_LEFT);
bind(RIGHT, KEY_RIGHT);
bind(UP, KEY_UP);
bind(DOWN, KEY_DOWN);
bind(FORWARD, KEY_PGUP, KEY_ADD);
bind(BACK, KEY_PGDN, KEY_SUBTRACT);
}
private void bind(Direction direction, int... keys) {
final GameControl control = manager.addControl(direction.name());
for (int key : keys) {
control.addBinding(new KeyboardBinding(key));
}
}
private float value(Direction direction) {
return manager.getControl(direction.name()).getValue();
}
public void update(float time) {
final float way = SPEED * time;
hAngle = clamp(hAngle + way * (value(RIGHT) - value(LEFT)), -MIN_ANGLE, MIN_ANGLE);
vAngle = clamp(vAngle + way * (value(DOWN) - value(UP)), -MIN_ANGLE, MIN_ANGLE);
gameState.getCameraRotationNode().getLocalRotation().fromAngles(vAngle, hAngle, 0f);
distance = clamp(distance + 20 * way * (value(BACK) - value(FORWARD)),
MIN_DISTANCE, MAX_DISTANCE);
gameState.getCameraDistanceNode().setLocalTranslation(0, 0, distance);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -