Fixes on the super janky collision

This commit is contained in:
Halbear 2026-07-05 01:19:29 +01:00
parent b817940716
commit e746462295
5 changed files with 871 additions and 870 deletions

File diff suppressed because it is too large Load diff

View file

@ -120,8 +120,9 @@ public class LegacyPhysicsController implements IPhysicsController {
NextPosition.add(localVelocityStep); NextPosition.add(localVelocityStep);
boolean ValidMovement = true; boolean ValidMovement = true;
Drag = CalculateDrag(TerminalVelocitiesMS, DragCoefficients,CrossSectionAreas, actor.GetScale()); Vector3f scale = new Vector3f(1,1,1);
FallingAcceleration = CalculateFallSpeed(MassKG, Drag, actor.GetScale()); Drag = CalculateDrag(TerminalVelocitiesMS, DragCoefficients,CrossSectionAreas, scale);
FallingAcceleration = CalculateFallSpeed(MassKG, Drag, scale);
Velocities.y -= (FallingAcceleration / (TargetFrameRate * 2f)) * DeltaTime; Velocities.y -= (FallingAcceleration / (TargetFrameRate * 2f)) * DeltaTime;

View file

@ -29,7 +29,7 @@ public class RigidBody {
public Vector3f CrossSectionAreas = new Vector3f(1.8f * 0.9f, 0.6f * 0.9f, 1.8f * 0.6f); public Vector3f CrossSectionAreas = new Vector3f(1.8f * 0.9f, 0.6f * 0.9f, 1.8f * 0.6f);
public Vector3f WeightDistribution = new Vector3f(2.0f,5.0f,7.0f); public Vector3f WeightDistribution = new Vector3f(2.0f,5.0f,7.0f);
public float FallingAcceleration = 0.0f; public float FallingAcceleration = 0.0f;
public float Bounciness = 0.3f; public float Bounciness = 2f;
public final Vector3f LinearVelocity = new Vector3f(); public final Vector3f LinearVelocity = new Vector3f();
public final Vector3f AngularVelocity = new Vector3f(); public final Vector3f AngularVelocity = new Vector3f();

View file

@ -43,9 +43,9 @@ public class RigidCollision {
float j = -(1 + Restitution) * VelocityAlongNormal / InverseMassSum; float j = -(1 + Restitution) * VelocityAlongNormal / InverseMassSum;
Impulse.set(normal).mul(j); Impulse.set(normal).mul(j);
body1.ApplyImpulse(NegatedImpulse.set(Impulse).negate(), Point); body1.ApplyImpulse(NegatedImpulse.set(Impulse).negate().mul(body1.Bounciness), Point);
body2.ApplyImpulse(Impulse,Point); body2.ApplyImpulse(Impulse.mul(body2.Bounciness),Point);
ApplyFriction(body1, body2, normal, Point, Dist1, Dist2, j); ApplyFriction(body1, body2, normal, Point, Dist1, Dist2, j);
} }

View file

@ -31,13 +31,13 @@ public class T4Math {
public static class Physics{ public static class Physics{
public static Vector3f CalculateDragCoefficients(Vector3f TerminalVelocitiesMS, float MassKG, Vector3f CrossSectionAreas, Vector3f Scale){ public static Vector3f CalculateDragCoefficients(Vector3f TerminalVelocitiesMS, float MassKG, Vector3f CrossSectionAreas, Vector3f Scale){
return (CalculateDragFromTerminalVelocities(TerminalVelocitiesMS,MassKG *Math.abs((Scale.x + Scale.y + Scale.z)/3),new Vector3f(CrossSectionAreas))); return (CalculateDragFromTerminalVelocities(TerminalVelocitiesMS,MassKG * 2,new Vector3f(CrossSectionAreas)));
} }
public static Vector3f CalculateDrag(Vector3f Velocities, Vector3f DragCoefficients, Vector3f CrossSectionAreas, Vector3f Scale){ public static Vector3f CalculateDrag(Vector3f Velocities, Vector3f DragCoefficients, Vector3f CrossSectionAreas, Vector3f Scale){
return (CalculateRealDrag(Velocities,DragCoefficients,new Vector3f(CrossSectionAreas))); return (CalculateRealDrag(Velocities,DragCoefficients,new Vector3f(CrossSectionAreas)));
} }
public static float CalculateFallSpeed(float MassKG, Vector3f Drag, Vector3f Scale){ public static float CalculateFallSpeed(float MassKG, Vector3f Drag, Vector3f Scale){
return CalculateGravityForce(MassKG *Math.abs((Scale.x + Scale.y + Scale.z)/3), Drag); return CalculateGravityForce(MassKG * 2, Drag);
} }
public static Vector3f CalculateRealDrag(Vector3f Velocity, Vector3f DragCoefficients, Vector3f CrossSectionAreas){ public static Vector3f CalculateRealDrag(Vector3f Velocity, Vector3f DragCoefficients, Vector3f CrossSectionAreas){