Exemple #1
0
    void ISimulatedBody.CheckCollision(ISimulatedBody other)
    {
        var otherBody = (SimulatedBodyPrediction)other;

        if (Intersects(position, colliderRadius, otherBody.position, otherBody.colliderRadius))
        {
            CollideWith(otherBody);
        }
    }
    private void ApplyGravityForces(ISimulatedBody bodyA, ISimulatedBody bodyB)
    {
        var forceDirection = bodyB.Position - bodyA.Position;
        var distance2      = Vector3.SqrMagnitude(forceDirection);

        if (!Mathf.Approximately(distance2, 0.0f))
        {
            forceDirection /= Mathf.Sqrt(distance2); // normalize forceDirection

            var F = G * (bodyA.Mass * bodyB.Mass) / distance2;

            bodyA.AddForce(F * forceDirection);
            bodyB.AddForce(-F * forceDirection);
        }
    }
 public void Remove(ISimulatedBody body)
 {
     allBodies.Remove(body);
 }
 public void Add(ISimulatedBody body)
 {
     allBodies.Add(body);
 }