mirror of
https://github.com/luanti-org/luanti.git
synced 2025-06-27 16:36:03 +00:00
Footsteps: Fix offset footstep and shallow water sound bugs
Fix footstep sounds coming from nodes to either side when walking on a 1 node wide row of nodebox slabs such as default:snow. Fix sand footsteps when swimming in 1 node deep water. Use a new function 'getFootstepNodePos()' instead of 'getStandingNodePos()' to avoid using a horizontally-offset 'sneak node' for sounds. Sound is selected from the node BS * 0.05 below the player's feet, so that 1/16th slabs will play the slab sound but 1/32nd slabs will not. If the player is not 'touching ground' the node detection position is changed to BS * 0.5 below to preserve footstep sounds when landing after a jump or fall.
This commit is contained in:
parent
1de08e1961
commit
984e063374
3 changed files with 14 additions and 1 deletions
|
@ -655,6 +655,18 @@ v3s16 LocalPlayer::getStandingNodePos()
|
|||
return floatToInt(getPosition() - v3f(0, BS, 0), BS);
|
||||
}
|
||||
|
||||
v3s16 LocalPlayer::getFootstepNodePos()
|
||||
{
|
||||
if (touching_ground)
|
||||
// BS * 0.05 below the player's feet ensures a 1/16th height
|
||||
// nodebox is detected instead of the node below it.
|
||||
return floatToInt(getPosition() - v3f(0, BS * 0.05f, 0), BS);
|
||||
// A larger distance below is necessary for a footstep sound
|
||||
// when landing after a jump or fall. BS * 0.5 ensures water
|
||||
// sounds when swimming in 1 node deep water.
|
||||
return floatToInt(getPosition() - v3f(0, BS * 0.5f, 0), BS);
|
||||
}
|
||||
|
||||
v3s16 LocalPlayer::getLightPosition() const
|
||||
{
|
||||
return floatToInt(m_position + v3f(0,BS+BS/2,0), BS);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue