first person controls
This commit is contained in:
20
app.js
20
app.js
@@ -1,4 +1,5 @@
|
|||||||
import * as THREE from 'three';
|
import * as THREE from 'three';
|
||||||
|
import { FirstPersonControls } from 'three/examples/jsm/Addons.js';
|
||||||
|
|
||||||
const scene = new THREE.Scene();
|
const scene = new THREE.Scene();
|
||||||
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
|
const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000);
|
||||||
@@ -13,7 +14,26 @@ scene.add(cube);
|
|||||||
|
|
||||||
camera.position.z = 5;
|
camera.position.z = 5;
|
||||||
|
|
||||||
|
// Initialize first person controls
|
||||||
|
const controls = new FirstPersonControls(camera, renderer.domElement);
|
||||||
|
controls.lookSpeed = 0.1;
|
||||||
|
controls.movementSpeed = 5;
|
||||||
|
controls.lookVertical = true;
|
||||||
|
controls.constrainVertical = true;
|
||||||
|
controls.verticalMin = 1.0;
|
||||||
|
controls.verticalMax = 2.0;
|
||||||
|
controls.lon = -150;
|
||||||
|
controls.lat = 120;
|
||||||
|
|
||||||
|
// Clock for controls timing
|
||||||
|
const clock = new THREE.Clock();
|
||||||
|
|
||||||
function animate() {
|
function animate() {
|
||||||
|
const delta = clock.getDelta();
|
||||||
|
|
||||||
|
// Update controls
|
||||||
|
controls.update(delta);
|
||||||
|
|
||||||
cube.rotation.x += 0.01;
|
cube.rotation.x += 0.01;
|
||||||
cube.rotation.y += 0.01;
|
cube.rotation.y += 0.01;
|
||||||
renderer.render(scene, camera);
|
renderer.render(scene, camera);
|
||||||
|
|||||||
16
node_modules/.vite/deps/_metadata.json
generated
vendored
16
node_modules/.vite/deps/_metadata.json
generated
vendored
@@ -2,14 +2,24 @@
|
|||||||
"hash": "6d498a50",
|
"hash": "6d498a50",
|
||||||
"configHash": "7161c023",
|
"configHash": "7161c023",
|
||||||
"lockfileHash": "6e33ff2f",
|
"lockfileHash": "6e33ff2f",
|
||||||
"browserHash": "1a1e3aed",
|
"browserHash": "0f7c2d3e",
|
||||||
"optimized": {
|
"optimized": {
|
||||||
"three": {
|
"three": {
|
||||||
"src": "../../three/build/three.module.js",
|
"src": "../../three/build/three.module.js",
|
||||||
"file": "three.js",
|
"file": "three.js",
|
||||||
"fileHash": "86612ddf",
|
"fileHash": "be02eb9c",
|
||||||
|
"needsInterop": false
|
||||||
|
},
|
||||||
|
"three/examples/jsm/Addons.js": {
|
||||||
|
"src": "../../three/examples/jsm/Addons.js",
|
||||||
|
"file": "three_examples_jsm_Addons__js.js",
|
||||||
|
"fileHash": "f8fc044c",
|
||||||
"needsInterop": false
|
"needsInterop": false
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"chunks": {}
|
"chunks": {
|
||||||
|
"chunk-CCI6HYBR": {
|
||||||
|
"file": "chunk-CCI6HYBR.js"
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
41513
node_modules/.vite/deps/chunk-CCI6HYBR.js
generated
vendored
Normal file
41513
node_modules/.vite/deps/chunk-CCI6HYBR.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
7
node_modules/.vite/deps/chunk-CCI6HYBR.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/chunk-CCI6HYBR.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
41483
node_modules/.vite/deps/three.js
generated
vendored
41483
node_modules/.vite/deps/three.js
generated
vendored
File diff suppressed because one or more lines are too long
8
node_modules/.vite/deps/three.js.map
generated
vendored
8
node_modules/.vite/deps/three.js.map
generated
vendored
File diff suppressed because one or more lines are too long
111871
node_modules/.vite/deps/three_examples_jsm_Addons__js.js
generated
vendored
Normal file
111871
node_modules/.vite/deps/three_examples_jsm_Addons__js.js
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
7
node_modules/.vite/deps/three_examples_jsm_Addons__js.js.map
generated
vendored
Normal file
7
node_modules/.vite/deps/three_examples_jsm_Addons__js.js.map
generated
vendored
Normal file
File diff suppressed because one or more lines are too long
Reference in New Issue
Block a user