42 lines
858 B
JavaScript
42 lines
858 B
JavaScript
var CAMERA_OFFSET_ANGLE = 0.0;
|
|
var CAMERA_OFFSET_RADIUS = 18.0;
|
|
var CAMERA_OFFSET_HEIGHT = 10.0;
|
|
|
|
class PlayerCamera extends Entity {
|
|
constructor(target) {
|
|
super();
|
|
this.target = target;
|
|
|
|
this.position = this.add(POSITION);
|
|
this.add(CAMERA);
|
|
|
|
this.update();
|
|
}
|
|
|
|
update() {
|
|
var targetPosition = this.target.position.getLocalPosition();
|
|
|
|
var eyeX = (
|
|
targetPosition.x + Math.cos(CAMERA_OFFSET_ANGLE) * CAMERA_OFFSET_RADIUS
|
|
);
|
|
var eyeY = (
|
|
targetPosition.y + CAMERA_OFFSET_HEIGHT
|
|
);
|
|
var eyeZ = (
|
|
targetPosition.z + Math.sin(CAMERA_OFFSET_ANGLE) * CAMERA_OFFSET_RADIUS
|
|
);
|
|
|
|
this.position.lookAt(
|
|
eyeX, eyeY, eyeZ,
|
|
targetPosition.x, targetPosition.y, targetPosition.z,
|
|
0.0, 1.0, 0.0
|
|
);
|
|
}
|
|
|
|
dispose() {
|
|
this.target = null;
|
|
}
|
|
}
|
|
|
|
module.exports = PlayerCamera;
|