Je travaille sur un projet Three.js en utilisant PointerLockControls (full modified code). Je voudrais mettre en œuvre la détection de collision pour le playehr. Je vais à ce sujet en faisant un nouvel objet cylindre Physijs et passer ensuite avec l'appareil photo à PointerLockControls:Three.js PointerLockControls et détection de collision Physisjs
var player = new Physijs.CylinderMesh(new THREE.CylinderGeometry(2, 2, 10, 32) , playerMaterial);
player.position.set(0, 5, 0);
player.addEventListener('collision', handleCollision);
scene.add(player);
controls = new PointerLockControls(camera, player);
En PointerLockControls, j'attach alors l'objet externe (gestionnaire de rotation de lacet) au joueur passé objet, puis déplacez l'objet joueur dans le monde.
velocity.x -= velocity.x * 10 * dt;
velocity.z -= velocity.z * 10 * dt;
velocity.y -= 9.8 * 20 * dt;
if (moveForward) velocity.z -= 180 * dt;
if (moveBackward) velocity.z += 180 * dt;
if (moveLeft) velocity.x -= 180 * dt;
if (moveRight) velocity.x += 180 * dt
player.translateX(velocity.x * dt);
player.translateY(velocity.y * dt);
player.translateZ(velocity.z * dt);
Cependant, lors de tests, à la fois l'objet de joueur et la phase de la caméra à travers le plancher, ou, si translateY est commenté, ne rien faire vibrer saccades en place lorsque je tente de les déplacer.
Où est-ce que je me suis trompé lors de la configuration? Il me semble que le problème vient d'attacher le yawObject à un objet joueur, puis de déplacer la bonne façon de faire la détection de collision avec ma configuration?