From fbe9b18b5e43804e59f6582f9f4cf602a0f8bdf2 Mon Sep 17 00:00:00 2001 From: KNSO Date: Sat, 12 Sep 2026 13:42:11 +0200 Subject: [PATCH] =?UTF-8?q?fix:=20Pflichtoption=20controls=20an=20player.i?= =?UTF-8?q?nit=20=C3=BCbergeben?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit player.init wirft ohne controls einen TypeError, da CameraSystem und InputSystem intern auf controls.domElement/.target zugreifen (siehe three-player-controller/src/systems/CameraSystem.ts, three-player-controller/src/systems/InputSystem.ts). Eine OrbitControls-Instanz auf renderer.domElement schließt die Lücke; der Controller übernimmt die eigentliche Kamerasteuerung ohnehin selbst. Co-Authored-By: Claude Sonnet 5 --- src/main.js | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/src/main.js b/src/main.js index 20c8144..57126ae 100644 --- a/src/main.js +++ b/src/main.js @@ -1,6 +1,7 @@ import { ACESFilmicToneMapping, AmbientLight, DirectionalLight, Mesh, MeshStandardMaterial, PerspectiveCamera, PlaneGeometry, Scene, Timer, Vector3, WebGLRenderer } from "three"; import { GLTFLoader } from "three/examples/jsm/loaders/GLTFLoader.js"; +import { OrbitControls } from "three/examples/jsm/controls/OrbitControls.js"; import { playerController } from "three-player-controller"; const container = document.querySelector("#container"); @@ -13,6 +14,8 @@ renderer.shadowMap.enabled = true; container.appendChild(renderer.domElement); const camera = new PerspectiveCamera(55, container.clientWidth / container.clientHeight, 0.1, 2500); +// Pflichtoption für player.init: der Controller übernimmt die Kamera, braucht aber controls.domElement als Eingabeziel. +const controls = new OrbitControls(camera, renderer.domElement); scene.add(new AmbientLight(0xffffff, 1.5)); const sun = new DirectionalLight(0xffffff, 2); sun.position.set(60, 120, 40); @@ -27,7 +30,7 @@ scene.add(ground); const gltf = await new GLTFLoader().loadAsync("./models/ual.glb"); const player = new playerController(); await player.init({ - scene, camera, + scene, camera, controls, colliders: [{ motion: "static", shape: { kind: "mesh", source: ground } }], initPos: new Vector3(0, 2, 0), playerModelConfig: {