character collider fix

This commit is contained in:
2025-11-10 07:23:24 +02:00
parent 503138a7d1
commit 22c27a7a9e
4 changed files with 15 additions and 7 deletions
+1 -1
View File
@@ -29,7 +29,7 @@ export class CharacterControls {
//this.characterController.enableSnapToGround(0.5); //this.characterController.enableSnapToGround(0.5);
// // Dont allow climbing slopes larger than 45 degrees. // // Dont allow climbing slopes larger than 45 degrees.
// this.characterController.setMaxSlopeClimbAngle(45 * Math.PI / 180); // this.characterController.setMaxSlopeClimbAngle(45 * Math.PI / 180);
// // Automatically slide down on slopes smaller than 30 degrees. // Automatically slide down on slopes smaller than 30 degrees.
// this.characterController.setMinSlopeSlideAngle(30 * Math.PI / 180); // this.characterController.setMinSlopeSlideAngle(30 * Math.PI / 180);
// this.characterController.enableAutostep(0.5, 0.2, true); // this.characterController.enableAutostep(0.5, 0.2, true);
this.characterController.setApplyImpulsesToDynamicBodies(true); this.characterController.setApplyImpulsesToDynamicBodies(true);
+2 -3
View File
@@ -30,10 +30,10 @@ class Hero{
let bb = getBoundingBox(this.model); let bb = getBoundingBox(this.model);
let size = getBoundingBoxSize(bb); let size = getBoundingBoxSize(bb);
let center = getBoundingBoxCenterPoint(bb, this.model.position).negate(); let center = getBoundingBoxCenterPoint(bb, this.model.position)
let po = gameEngine.physics.add(this.model, 'kinematicPositionBased', false, undefined, 'capsule', { radius: size.x/2, halfHeight: size.y/2}) 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.setTranslationWrtParent({x: center.x, y: center.y + size.y/2, z: center.z});
//po.collider.setActiveEvents(RAPIER.ActiveEvents.COLLISION_EVENTS); //po.collider.setActiveEvents(RAPIER.ActiveEvents.COLLISION_EVENTS);
this.characterControls = new CharacterControls(this.model, this.characterControls = new CharacterControls(this.model,
@@ -50,7 +50,6 @@ class Hero{
} }
update(){ update(){
//return
if (this.gameEngine.renderer.xr.isPresenting) return; if (this.gameEngine.renderer.xr.isPresenting) return;
if (this.ready && !this.disableInput) { if (this.ready && !this.disableInput) {
+3 -2
View File
@@ -65,8 +65,9 @@ export default {
if (transformFn){ if (transformFn){
value = transformFn(key, value) value = transformFn(key, value)
} }
if (value && typeof value === 'object' && !Array.isArray(value)) { if (value && typeof value === 'object') {
this.deepMerge(target[key] = target[key] || {}, value, transformFn); let dflt = Array.isArray(value) ? [] : {};
this.deepMerge(target[key] = target[key] || dflt, value, transformFn);
return; return;
} }
target[key] = value; target[key] = value;
+8
View File
@@ -126,6 +126,14 @@ export default {
if (this.scene.data.$scene){ if (this.scene.data.$scene){
let env = await gameEngine.load(this.scene.data.$scene.asset.name); let env = await gameEngine.load(this.scene.data.$scene.asset.name);
this.setObjectAttributes(l, this.scene.data, env.scene, env, 100); this.setObjectAttributes(l, this.scene.data, env.scene, env, 100);
if (this.env != 'GameDesigner'){
env.scene.traverse(o=>{
if (o.name == 'Sphere'){
console.log('Fixing ground. TODO!!!')
gameEngine.physics.add(o, 'fixed', true, undefined)
}
})
}
gameEngine.activeObjects.add(env.scene); gameEngine.activeObjects.add(env.scene);
} }
if (this.scene.data.$intro && this.env == 'GamePlaying'){ if (this.scene.data.$intro && this.env == 'GamePlaying'){