diff options
author | Gregor Parzefall <82708541+grorp@users.noreply.github.com> | 2022-03-14 21:01:18 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-03-14 21:01:18 +0100 |
commit | 289c3ff37723402bab71e2849abe060403ef8f41 (patch) | |
tree | 6972b51dcd8e8621c8b33f66144beeb5c8fd3c65 | |
parent | 11f3f72f1cfe8111574ee865829c380cd7fc7c30 (diff) | |
download | minetest-289c3ff37723402bab71e2849abe060403ef8f41.tar.gz minetest-289c3ff37723402bab71e2849abe060403ef8f41.tar.bz2 minetest-289c3ff37723402bab71e2849abe060403ef8f41.zip |
Fix footsteps for players whose collision box min y != 0 (#12110)
-rw-r--r-- | src/client/localplayer.cpp | 8 |
1 files changed, 5 insertions, 3 deletions
diff --git a/src/client/localplayer.cpp b/src/client/localplayer.cpp index 4f1ea7bda..279efafe9 100644 --- a/src/client/localplayer.cpp +++ b/src/client/localplayer.cpp @@ -672,19 +672,21 @@ v3s16 LocalPlayer::getStandingNodePos() 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 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 // nodebox is detected instead of the node below it. 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 // 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.0f, BS * 0.5f, 0.0f), BS); + return floatToInt(feet_pos - v3f(0.0f, BS * 0.5f, 0.0f), BS); } v3s16 LocalPlayer::getLightPosition() const |