use PointerLockControls lib

This commit is contained in:
Adrien MALINGREY 2023-06-10 20:08:29 +02:00
parent 28b57c37d5
commit f0415b52ed

57
main.js
View File

@ -1,14 +1,14 @@
import * as THREE from 'three'; import * as THREE from 'three';
import Stats from 'three/addons/libs/stats.module.js';
import { Octree } from 'three/addons/math/Octree.js'; import { Octree } from 'three/addons/math/Octree.js';
import { OctreeHelper } from 'three/addons/helpers/OctreeHelper.js';
import { Capsule } from 'three/addons/math/Capsule.js'; import { Capsule } from 'three/addons/math/Capsule.js';
import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
import { Water } from 'three/addons/objects/Water.js'; import { Water } from 'three/addons/objects/Water.js';
import { Sky } from 'three/addons/objects/Sky.js'; import { Sky } from 'three/addons/objects/Sky.js';
import { PointerLockControls } from 'three/addons/controls/PointerLockControls.js';
import { GUI } from 'three/addons/libs/lil-gui.module.min.js';
import { OctreeHelper } from 'three/addons/helpers/OctreeHelper.js';
import Stats from 'three/addons/libs/stats.module.js';
import MazeMesh from './MazeMesh.js'; import MazeMesh from './MazeMesh.js';
@ -436,6 +436,28 @@ let playerOnFloor = false;
let jumping = false; let jumping = false;
let escaped = false; let escaped = false;
const pointerLockControls = new PointerLockControls(camera, document.body);
container.addEventListener('click', function () {
pointerLockControls.lock();
});
pointerLockControls.addEventListener('lock', function () {
ambiance.play();
});
pointerLockControls.addEventListener('unlock', function () {
ambiance.pause();
});
scene.add(pointerLockControls.getObject());
const keyStates = {}; const keyStates = {};
document.addEventListener('keydown', (event) => { document.addEventListener('keydown', (event) => {
@ -451,33 +473,6 @@ document.addEventListener('keyup', (event) => {
}); });
container.addEventListener('mousedown', () => {
document.body.requestPointerLock();
});
function lockChangeAlert() {
if (document.pointerLockElement === document.body) {
ambiance.play()
} else {
ambiance.pause()
}
}
document.addEventListener("pointerlockchange", lockChangeAlert, false);
document.body.addEventListener('mousemove', (event) => {
if (document.pointerLockElement === document.body) {
camera.rotation.y -= event.movementX / 500;
camera.rotation.x -= event.movementY / 500;
}
});
function playerCollisions() { function playerCollisions() {
if (!escaped && raftOctree.capsuleIntersect(playerCollider)) { if (!escaped && raftOctree.capsuleIntersect(playerCollider)) {