Fix RayShape collision jitter when used with a RigidBody
Scaling the depth was the wrong solution for the KinematicBody jitter because it causes jitter with RigidBody. Instead scale the margin that is ignored to allow KinematicBody to still pick up the ray shape in the kinematic test when the shape is just at margin distance from another one. This solution does not cause jitter with either KinematicBody or RigidBody.
This commit is contained in:
parent
75c89aaaef
commit
6587024207
1 changed files with 2 additions and 2 deletions
|
@ -100,8 +100,8 @@ void GodotRayWorldAlgorithm::processCollision(const btCollisionObjectWrapper *bo
|
||||||
|
|
||||||
btScalar depth(ray_shape->getScaledLength() * (btResult.m_closestHitFraction - 1));
|
btScalar depth(ray_shape->getScaledLength() * (btResult.m_closestHitFraction - 1));
|
||||||
|
|
||||||
if (depth >= -ray_shape->getMargin())
|
if (depth >= -ray_shape->getMargin() * 0.5)
|
||||||
depth *= 0.5;
|
depth = 0;
|
||||||
|
|
||||||
if (ray_shape->getSlipsOnSlope())
|
if (ray_shape->getSlipsOnSlope())
|
||||||
resultOut->addContactPoint(btResult.m_hitNormalWorld, btResult.m_hitPointWorld, depth);
|
resultOut->addContactPoint(btResult.m_hitNormalWorld, btResult.m_hitPointWorld, depth);
|
||||||
|
|
Loading…
Reference in a new issue