forked from Mirrorlandia_minetest/minetest
Fix footsteps for players whose collision box min y != 0 (#12110)
This commit is contained in:
parent
11f3f72f1c
commit
289c3ff377
@ -672,19 +672,21 @@ v3s16 LocalPlayer::getStandingNodePos()
|
|||||||
|
|
||||||
v3s16 LocalPlayer::getFootstepNodePos()
|
v3s16 LocalPlayer::getFootstepNodePos()
|
||||||
{
|
{
|
||||||
|
v3f feet_pos = getPosition() + v3f(0.0f, m_collisionbox.MinEdge.Y, 0.0f);
|
||||||
|
|
||||||
// Emit swimming sound if the player is in liquid
|
// Emit swimming sound if the player is in liquid
|
||||||
if (in_liquid_stable)
|
if (in_liquid_stable)
|
||||||
return floatToInt(getPosition(), BS);
|
return floatToInt(feet_pos, BS);
|
||||||
|
|
||||||
// BS * 0.05 below the player's feet ensures a 1/16th height
|
// BS * 0.05 below the player's feet ensures a 1/16th height
|
||||||
// nodebox is detected instead of the node below it.
|
// nodebox is detected instead of the node below it.
|
||||||
if (touching_ground)
|
if (touching_ground)
|
||||||
return floatToInt(getPosition() - v3f(0.0f, BS * 0.05f, 0.0f), BS);
|
return floatToInt(feet_pos - v3f(0.0f, BS * 0.05f, 0.0f), BS);
|
||||||
|
|
||||||
// A larger distance below is necessary for a footstep sound
|
// A larger distance below is necessary for a footstep sound
|
||||||
// when landing after a jump or fall. BS * 0.5 ensures water
|
// when landing after a jump or fall. BS * 0.5 ensures water
|
||||||
// sounds when swimming in 1 node deep water.
|
// sounds when swimming in 1 node deep water.
|
||||||
return floatToInt(getPosition() - v3f(0.0f, BS * 0.5f, 0.0f), BS);
|
return floatToInt(feet_pos - v3f(0.0f, BS * 0.5f, 0.0f), BS);
|
||||||
}
|
}
|
||||||
|
|
||||||
v3s16 LocalPlayer::getLightPosition() const
|
v3s16 LocalPlayer::getLightPosition() const
|
||||||
|
Loading…
Reference in New Issue
Block a user