From 0551d78dffd5d377de382e34d9f6c77773c68202 Mon Sep 17 00:00:00 2001 From: Mattes D Date: Sun, 28 May 2017 20:56:17 +0200 Subject: Fixed tracer usage in Entity physics handling. (#3720) --- src/Mobs/Monster.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) (limited to 'src/Mobs/Monster.cpp') diff --git a/src/Mobs/Monster.cpp b/src/Mobs/Monster.cpp index ef8794e53..00045fc69 100644 --- a/src/Mobs/Monster.cpp +++ b/src/Mobs/Monster.cpp @@ -149,20 +149,21 @@ void cMonster::MoveToWayPoint(cChunk & a_Chunk) return; } - - if (m_JumpCoolDown == 0) + if (m_JumpCoolDown <= 0) { if (DoesPosYRequireJump(FloorC(m_NextWayPointPosition.y))) { - if (((IsOnGround()) && (GetSpeed().SqrLength() == 0.0f)) || - (IsSwimming())) + if ( + (IsOnGround() && (GetSpeed().SqrLength() <= 0.5)) || // If walking on the ground, we need to slow down first, otherwise we miss the jump + IsSwimming() + ) { m_bOnGround = false; m_JumpCoolDown = 20; - // TODO: Change to AddSpeedY once collision detection is fixed - currently, mobs will go into blocks attempting to jump without a teleport AddPosY(1.6); // Jump!! + SetSpeedY(1); SetSpeedX(3.2 * (m_NextWayPointPosition.x - GetPosition().x)); // Move forward in a preset speed. - SetSpeedZ(3.2 * (m_NextWayPointPosition.z - GetPosition().z)); // The numbers were picked based on trial and error and 1.6 and 3.2 are perfect. + SetSpeedZ(3.2 * (m_NextWayPointPosition.z - GetPosition().z)); // The numbers were picked based on trial and error } } } @@ -172,7 +173,7 @@ void cMonster::MoveToWayPoint(cChunk & a_Chunk) } Vector3d Distance = m_NextWayPointPosition - GetPosition(); - if ((Distance.x != 0.0f) || (Distance.z != 0.0f)) + if ((std::abs(Distance.x) > 0.05) || (std::abs(Distance.z) > 0.05)) { Distance.y = 0; Distance.Normalize(); -- cgit v1.2.3