From 23c39a71a6c7edf47a57a8a54a49e73ae558015d Mon Sep 17 00:00:00 2001 From: neru Date: Tue, 2 Jun 2026 02:47:45 -0300 Subject: [PATCH] feat: add footsteps --- public/fear/snd/footstep1.mp3 | Bin 0 -> 3888 bytes public/fear/snd/footstep2.mp3 | Bin 0 -> 3888 bytes public/fear/snd/footstep3.mp3 | Bin 0 -> 3888 bytes public/fear/snd/footstep4.mp3 | Bin 0 -> 3888 bytes public/fear/snd/footstep5.mp3 | Bin 0 -> 3888 bytes public/fear/snd/footstep6.mp3 | Bin 0 -> 4320 bytes src/app/fear/scene-components/player.tsx | 48 +++++++++++++++++++---- 7 files changed, 40 insertions(+), 8 deletions(-) create mode 100644 public/fear/snd/footstep1.mp3 create mode 100644 public/fear/snd/footstep2.mp3 create mode 100644 public/fear/snd/footstep3.mp3 create mode 100644 public/fear/snd/footstep4.mp3 create mode 100644 public/fear/snd/footstep5.mp3 create mode 100644 public/fear/snd/footstep6.mp3 diff --git a/public/fear/snd/footstep1.mp3 b/public/fear/snd/footstep1.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..c2e3e8be8bcc534aa8c75f7d685ef664fc541d65 GIT binary patch literal 3888 zcmezWIO7Nd40z_Heb}6VXI-ax@QhoY2U=cE z4OCkiHmg@I-KaxiS%SmGeh)Q!$r&v|UJM2kDvmTY3v=)o@c1#PGl(!3#BeuBJm?nK zz{)VktzCktfH8spn56=P4!cRgB*qCUEQ*PCF=G6m%C`A4S*UScLXX*w>*+q(9~w+?7#5M@1^?fJrj+NotL-%x%>O? ziuTptK1O_+_vQP(mrQC2F4zD6|NFk)H};8F^}T;g`|RYhr1s7)c>G@E|NnoQUcvGI zJ@}Q<)E4gVZ|^r{n)Uzp-N(l#Y8_jj-jF#r=ldBm(`xHutVtUgI7JpUD1;;`s3m21 zrS4=(K5UTY{4T?ap{8g~;hemjNefbE1tdD8Ie1Ez=t}uSOBkiioun?g;O|Vk)3ZY@ zW*m4r+vaR9XPa90GEjVZXLBF&37q?Yp}2S1!l};$h1l#^-HrFME#L0WKU*zTE-g?z zO{^(RT{JCI@!1r82G(WPoHM>8G4V@eaEQ0f@cfqcHEkT5I9p{6UdN-iuB zk}#~`Y_ga#P4-m8-s%bo6Cp9SDeTQmY_>e-G@HE)1UO$h2pBNM33IYsSbHOzCo_nt zA>#I-JBx~ro=ge04-Rw)C{Pe!lVP5bB9xNwD6g?0l~IJXjp6o7#t?>6f)ZS8UJd~k z20Z7U1&j0Ko_hYKY-x}A-vXIAs3 zV;d%%UN&)tWpAfMbXuGq-c&fdioUatxglmcVi3|Pt9F=sBzj2W{!3Z8{eZz(w+qPpX5&{FSDQ?)W>*L4fOFIicYI(4VAPVOzA zJ&`H~|5*-Nuj@2KX4 zf4Jyn=6N;m0>@V;sqTWbZrO!(z6P4#R+pUAe&yL%Dx|g~fk~+FaC%!s;sjBj7+a%& z)L(&DPfhlnD=d=WQ0ma=e91EB+!J=jC2?wLvlu2S+Q}rGc-7VMnAk(mjx8@>`OlNFcowW4piM_WT#oKRs88B(Oh^di1$Hq2J$2nay zMYgqTOuKU~?a3yF-5i3qHyw)zK2fx$3KUhI*mPFG zH}it_C5v9Ybw%h^$)qV!QUVI|J@%;je-R)(mLRH#4*?zwwHW_G6yu5t7(atw>znu%)VsbGxEh6pm zrI5^&djYFclIpkf9r>#*w$X3OEU6PetwpzI^XTz--PmO{eZpro7mr6tVFnsSi(I8& zon0QnkA4qOWk^A^_o5Nj$Bl5_RE&ZXAHPP5cMWlp=o zVwfHxI>RLWX2GJ_{tXvnyVl&0ReJQ!$w~8|6yFjZ=1X_DKKk=GJIrRWSk9W`m~4H{ zcuLe+vxQ%3YavemKhSR8{`)!CURD(mh+2l@-qf zA3o7>k35mp2#T-AiBpmUnBK+NM3g!?^&j$>>9){CH(~$m6Gb*BEm8?ae7?(ys`>#@>^UO0h1J%lZR+Rxl+C)U`d2-B z@N7@6madk7uB*(ofaP;lEH!?uSYTpsdaeFl4wuWH7WbH@@9O+7*(A}mzieZIFOz)P zvfDkq_tJWEgEVaB<}LVi1QcHn5?P`&zQ!D2thsf&Tu3% zm?SOsll(+O9jr!08$;?F6A9TWHsTx|I`&locCC~~_rA7*i$%W}B(<1%9f1u&C!vh1B~Zp2(ovGaDKnd;-PS z|LVtwcn;3Jz@W05jf+dlVTp~L4O<8gM-nrmSHHegksEO$$ zH%Ki_JjXpnQOxMim03~(Ix>fQ7)6D2Saeb&C6&`SW=sj@Td~lRE5YHTA{$TS1_dV{ zE|Cd4oj)^hoNh33a9Zr5)!XR0gD+#Ln$C}lf=mrI#%ih7XI>engh=sR6EbGu3H*@L z)UDv2?pMX&bK$WF!^vhok0pji4L2P#dp=BNYkVZ7mDt_M!m!3P^|Xw{uJ-I-|N7UHt<%eLr>qIv zZLPJ{nD4@-sa_kS-aKwu;K_3&@lL5Pucgn+xy(U1o-GSJ7#lbkI=84YDyXn`p7+*H zkZG8}$oNp=mtV_*9Nv~ig%iIpPY_~qs3@yit|Y+Bka$x=i9x|d3KU-*UVriw=if+R z=yVEN<}x9R*CkNp$OfN z0Tq^piDt?RIfU4bJm0!_vGV)W?5&%go}L~Z8U5xuUr)0gA cA5SGu4KJhENWFZ-$qLp(7Fi09{cLUH||9 literal 0 HcmV?d00001 diff --git a/public/fear/snd/footstep2.mp3 b/public/fear/snd/footstep2.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..bb45515b761c71dd266bf26b13bebc7a109fb4d8 GIT binary patch literal 3888 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 W+pV^_x=*+4*hNt-Mn=U)4=n(B`2MQ^ literal 0 HcmV?d00001 diff --git a/public/fear/snd/footstep4.mp3 b/public/fear/snd/footstep4.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..fd446b5bbe4fa2978b1d52dcf15deef89fbd8e7d GIT binary patch literal 3888 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 CvSQHy literal 0 HcmV?d00001 diff --git a/public/fear/snd/footstep6.mp3 b/public/fear/snd/footstep6.mp3 new file mode 100644 index 0000000000000000000000000000000000000000..135e31913efd36e158b9cd34389b5fd1abd70906 GIT binary patch literal 4320 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 const hasTriggeredThisSegment = useRef(false); + const footstepAudio = useRef([]); + const hasStepped = useRef(false); + + + useEffect(() => { playerRoot.set(camera.position.x, FEAR_SETTINGS.PLAYER_HEIGHT, camera.position.z); + footstepAudio.current = Array.from({ length: 6 }, (_, i) => { + const audio = new Audio(`fear/snd/footstep${i + 1}.mp3`); + audio.volume = 0.4; + return audio; + }); }, []); + const playRandomFootstep = () => { + if (footstepAudio.current.length === 0) return; + + const randomIndex = Math.floor(Math.random() * footstepAudio.current.length); + const audio = footstepAudio.current[randomIndex]; + + audio.currentTime = 0; + audio.play().catch((err) => { + console.warn("Footstep playback blocked by browser autocomplete/interaction rules.", err); + }); + }; + useFrame((state, delta) => { const dt = Math.min(delta, 0.1); @@ -73,7 +95,7 @@ export default function Player() { if (moveForward !== 0) targetVelocity.addScaledVector(forward, moveForward); if (moveSide !== 0) targetVelocity.addScaledVector(side, moveSide); - if (targetVelocity.lengthSq() > 0) + if (targetVelocity.lengthSq() > 0) targetVelocity.normalize().multiplyScalar(FEAR_SETTINGS.PLAYER_SPEED); currentVelocity.lerp(targetVelocity, 10 * dt); @@ -86,15 +108,25 @@ export default function Player() { playerRoot.x = THREE.MathUtils.clamp(playerRoot.x, minX, maxX); const isMoving = controls.Forward || controls.Backward || controls.Left || controls.Right; - + bobIntensity.current = THREE.MathUtils.lerp(bobIntensity.current, isMoving ? 1 : 0, 8 * dt); - - if (isMoving) + + if (isMoving) movementCounter.current += dt * 12; - const moveBobY = Math.sin(movementCounter.current) * 0.06 * bobIntensity.current; + const sinWave = Math.sin(movementCounter.current); + const moveBobY = sinWave * 0.06 * bobIntensity.current; const moveBobX = Math.cos(movementCounter.current / 2) * 0.04 * bobIntensity.current; + if (isMoving && sinWave < -0.9) { + if (!hasStepped.current) { + playRandomFootstep(); + hasStepped.current = true; + } + } else if (sinWave > 0) { + hasStepped.current = false; + } + const breatheTime = state.clock.elapsedTime * 1.8; const breatheBobY = Math.sin(breatheTime) * 0.03 * (1 - bobIntensity.current * 0.5); @@ -113,13 +145,13 @@ export default function Player() { flashlightRef.current.target.position.lerp(targetDest, 12 * dt); flashlightRef.current.target.updateMatrixWorld(); - flashlightRef.current.intensity = - FEAR_SETTINGS.FLASHLIGHT_INTENSITY_BASE + + flashlightRef.current.intensity = + FEAR_SETTINGS.FLASHLIGHT_INTENSITY_BASE + Math.sin(state.clock.elapsedTime * 30) * 0.15 * Math.cos(state.clock.elapsedTime * 3); } const length = FEAR_SETTINGS.HALLWAY_LENGTH; - const absoluteZ = -playerRoot.z; + const absoluteZ = -playerRoot.z; const rawSegmentIndex = Math.floor(absoluteZ / length); const progressZ = ((absoluteZ % length) + length) % length / length;