From 3fde0925c5b88d47fda265993778d4f57a185a9e Mon Sep 17 00:00:00 2001 From: nico Date: Tue, 18 Aug 2026 16:36:16 +0200 Subject: [PATCH] Add back-mounted shield model tied to shield skill Co-authored-by: Qwen-Coder --- web/public/textures/shield.png | Bin 31956 -> 19738 bytes web/src/Player.ts | 50 +++++++++++++++++++++++++++++++++ 2 files changed, 50 insertions(+) diff --git a/web/public/textures/shield.png b/web/public/textures/shield.png index fbee839bcbe2da92c7f65db8c0fbd8cf4a7c1a9b..2209cfa90f9e282761bb1e0546331754f393a658 100644 GIT binary patch literal 19738 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 diff --git a/web/src/Player.ts b/web/src/Player.ts index 6766a48..cf5d89b 100644 --- a/web/src/Player.ts +++ b/web/src/Player.ts @@ -44,6 +44,7 @@ export class Player { mixer!: THREE.AnimationMixer; private clips: Map = new Map(); private currentAnim = ''; + private backShield: THREE.Group | null = null; constructor() { this.body = new THREE.Group(); @@ -88,6 +89,49 @@ export class Player { shadow.renderOrder = 999; this.body.add(shadow); + // Shield on the back while the shield skill is charged + loadGLB('shield').then((gltf) => { + const shieldModel = gltf.scene; + const shieldTexture = new THREE.TextureLoader().load('./textures/shield.png'); + shieldTexture.flipY = false; + shieldTexture.colorSpace = THREE.SRGBColorSpace; + shieldModel.traverse((child) => { + if (child instanceof THREE.Mesh) { + const geo = child.geometry; + // The converted model has no UVs; project them from the + // front plane so the shield texture maps onto the face + if (!geo.attributes.uv) { + geo.computeBoundingBox(); + const bb = geo.boundingBox!; + const pos = geo.attributes.position; + const uv = new Float32Array(pos.count * 2); + for (let i = 0; i < pos.count; i++) { + uv[i * 2] = (pos.getX(i) - bb.min.x) / (bb.max.x - bb.min.x); + uv[i * 2 + 1] = (pos.getY(i) - bb.min.y) / (bb.max.y - bb.min.y); + } + geo.setAttribute('uv', new THREE.BufferAttribute(uv, 2)); + } + child.castShadow = true; + child.material = new THREE.MeshToonMaterial({ map: shieldTexture }); + } + }); + // The geometry is offset from the model origin; recenter it so + // rotation and scale act on the shield's center + const box = new THREE.Box3().setFromObject(shieldModel); + const center = box.getCenter(new THREE.Vector3()); + shieldModel.position.sub(center); + const shield = new THREE.Group(); + shield.add(shieldModel); + shield.scale.set(0.25, 0.25, 0.25); + shield.position.set(0, 0.85, -0.5); + shield.rotation.set(-0.15, Math.PI, 0); + shield.visible = this.stats.shield > 0 && this.shieldHp > 0; + this.backShield = shield; + this.body.add(shield); + }).catch(() => { + // No shield model available + }); + // Weapons this.leftHandWeapon = new Staff(); this.rightHandWeapon = new Sword(); @@ -206,6 +250,9 @@ export class Player { this.shieldTimer = 0; } } + if (this.backShield) { + this.backShield.visible = this.stats.shield > 0 && this.shieldHp > 0; + } } applySkillSystem(skills: SkillSystem) { @@ -232,6 +279,9 @@ export class Player { if (this.stats.shield > 0 && this.shieldHp <= 0) { this.shieldHp = this.stats.shield; } + if (this.backShield) { + this.backShield.visible = this.stats.shield > 0 && this.shieldHp > 0; + } } die() {