three.js实现第一人称视角漫游
时间: 2023-06-13 22:06:38 浏览: 245
第一人称视角室内漫游程序
5星 · 资源好评率100%
要实现第一人称视角漫游,可以使用 three.js 中的摄像机和控制器。以下是一个简单的示例:
```javascript
// 创建场景
var scene = new THREE.Scene();
// 创建相机
var camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
// 创建渲染器
var renderer = new THREE.WebGLRenderer();
renderer.setSize(window.innerWidth, window.innerHeight);
document.body.appendChild(renderer.domElement);
// 创建控制器
var controls = new THREE.PointerLockControls(camera);
scene.add(controls.getObject());
// 添加一个立方体作为墙壁
var geometry = new THREE.BoxGeometry(10, 10, 10);
var material = new THREE.MeshBasicMaterial({ color: 0x00ff00 });
var cube = new THREE.Mesh(geometry, material);
scene.add(cube);
// 监听鼠标点击事件
document.addEventListener('mousedown', function () {
controls.lock();
});
// 监听键盘事件
var onKeyDown = function (event) {
switch (event.keyCode) {
case 38: // up arrow
case 87: // W key
controls.moveForward(1);
break;
case 37: // left arrow
case 65: // A key
controls.moveLeft(1);
break;
case 40: // down arrow
case 83: // S key
controls.moveForward(-1);
break;
case 39: // right arrow
case 68: // D key
controls.moveRight(1);
break;
}
};
document.addEventListener('keydown', onKeyDown);
// 渲染场景
function animate() {
requestAnimationFrame(animate);
renderer.render(scene, camera);
}
animate();
```
这个示例中,我们创建了一个场景、一个相机和一个渲染器。然后,我们创建了一个控制器,并将相机添加到场景中。我们还添加了一个立方体作为墙壁,并监听鼠标点击事件和键盘事件,以控制相机的移动。最后,我们使用 `requestAnimationFrame` 函数来渲染场景。
阅读全文