From 9bb588e47e465f32499c45a1552cd4c45b5bf040 Mon Sep 17 00:00:00 2001 From: goynov Date: Sun, 9 Nov 2025 09:05:35 +0200 Subject: [PATCH] character collider dimensions --- .../InteractiveObjects/MazeQuizGame/MazeObject.js | 2 +- src/lib/Hero.js | 9 +++++++-- 2 files changed, 8 insertions(+), 3 deletions(-) diff --git a/src/components/InteractiveObjects/MazeQuizGame/MazeObject.js b/src/components/InteractiveObjects/MazeQuizGame/MazeObject.js index 6022a89..9a3d66d 100644 --- a/src/components/InteractiveObjects/MazeQuizGame/MazeObject.js +++ b/src/components/InteractiveObjects/MazeQuizGame/MazeObject.js @@ -145,7 +145,7 @@ class MazeObject { roughness: 0, metalness:1, color: 0x00ffff, side: DoubleSide })) floor.rotation.set(Math.PI/2, 0, 0) - floor.position.set((bbox.l + bbox.r)/2, 0.3, bbox.f/2); + floor.position.set((bbox.l + bbox.r)/2, 0, bbox.f/2); root.add(floor); } } diff --git a/src/lib/Hero.js b/src/lib/Hero.js index a8dc4cc..e2ab285 100644 --- a/src/lib/Hero.js +++ b/src/lib/Hero.js @@ -2,6 +2,7 @@ import { AnimationMixer } from 'three'; import { PointerControls } from './PointerControls'; import { CharacterControls } from './CharacterControls'; import * as THREE from 'three'; +import { getBoundingBox, getBoundingBoxCenterPoint, getBoundingBoxSize } from './MeshUtils'; class Hero{ @@ -27,8 +28,12 @@ class Hero{ this.pointerControls = new PointerControls(gameEngine.camera, this.model, gameEngine.renderer.domElement); gameEngine.hero = this; - let po = gameEngine.physics.add(this.model, 'kinematicPositionBased', false, undefined, 'capsule', { radius: 0.5, halfHeight: 1}) - po.collider.setTranslationWrtParent({ x: 0, y: 2.0, z: 0 }); + let bb = getBoundingBox(this.model); + let size = getBoundingBoxSize(bb); + let center = getBoundingBoxCenterPoint(bb, this.model.position).negate(); + + let po = gameEngine.physics.add(this.model, 'kinematicPositionBased', false, undefined, 'capsule', { radius: size.x/2, halfHeight: size.y/2}) + po.collider.setTranslationWrtParent({x: center.x, y: -this.model.position.y, z: center.z}); //po.collider.setActiveEvents(RAPIER.ActiveEvents.COLLISION_EVENTS); this.characterControls = new CharacterControls(this.model,