Browse Source

Added tolerance to skip velocity check. Sometimes the character was reporting InAir due to floating point accuracy issues. (#398)

Jorrit Rouwe 2 years ago
parent
commit
006c2379f4
1 changed files with 1 additions and 1 deletions
  1. 1 1
      Jolt/Physics/Character/CharacterVirtual.cpp

+ 1 - 1
Jolt/Physics/Character/CharacterVirtual.cpp

@@ -679,7 +679,7 @@ void CharacterVirtual::UpdateSupportingContact(bool inSkipContactVelocityCheck,
 		if (!c.mWasDiscarded
 		if (!c.mWasDiscarded
 			&& !c.mHadCollision
 			&& !c.mHadCollision
 			&& c.mDistance < mCollisionTolerance
 			&& c.mDistance < mCollisionTolerance
-			&& (inSkipContactVelocityCheck || c.mSurfaceNormal.Dot(mLinearVelocity - c.mLinearVelocity) <= 0.0f))
+			&& (inSkipContactVelocityCheck || c.mSurfaceNormal.Dot(mLinearVelocity - c.mLinearVelocity) <= 1.0e-4f))
 		{
 		{
 			if (ValidateContact(c))
 			if (ValidateContact(c))
 				c.mHadCollision = true;
 				c.mHadCollision = true;