This commit is contained in:
Syntriax 2023-12-04 17:53:48 +03:00
parent def463afcf
commit 259941c867
1 changed files with 13 additions and 10 deletions

View File

@ -68,23 +68,26 @@ public class PhysicsEngine2D : IPhysicsEngine2D
// // rigidX.Velocity = Vector2.Reflect(rigidX.Velocity, collisionInformation.Normal); // // rigidX.Velocity = Vector2.Reflect(rigidX.Velocity, collisionInformation.Normal);
if (colliders[colliderIX].BehaviourController.TryGetBehaviour(out IRigidBody2D? rigidX)) if (colliders[colliderIX].BehaviourController.TryGetBehaviour(out IRigidBody2D? rigidX))
{ {
Vector2 toContact = colliderX.Transform.Position - collisionInformation.ContactPosition;
Vector2 mirrored = Vector2.Reflect(toContact, new Vector2(collisionInformation.Normal.X, collisionInformation.Normal.Y));
Console.WriteLine($"rigidX.Velocity = {rigidX.Velocity}"); Console.WriteLine($"rigidX.Velocity = {rigidX.Velocity}");
rigidX.Velocity = Vector2.Reflect(rigidX.Velocity, collisionInformation.Normal); rigidX.Velocity = Vector2.Reflect(rigidX.Velocity, collisionInformation.Normal);
Vector2 vector2 = -new Vector2(collisionInformation.Normal.X * rigidX.Velocity.X, collisionInformation.Normal.Y * rigidX.Velocity.Y); Vector2 vector2 = -new Vector2(collisionInformation.Normal.X * rigidX.Velocity.X, collisionInformation.Normal.Y * rigidX.Velocity.Y);
Console.WriteLine($"Displacement = {vector2}"); Console.WriteLine($"Displacement = {vector2}");
rigidX.Transform.Position += vector2 * intervalDeltaTime * 2; rigidX.Transform.Position -= mirrored * 2;
Console.WriteLine($"rigidX.Velocity = {rigidX.Velocity}"); Console.WriteLine($"rigidX.Velocity = {rigidX.Velocity}");
} }
if (colliders[colliderIY].BehaviourController.TryGetBehaviour(out IRigidBody2D? rigidY)) // if (colliders[colliderIY].BehaviourController.TryGetBehaviour(out IRigidBody2D? rigidY))
{ // {
Console.WriteLine($"rigidY.Velocity = {rigidY.Velocity}"); // Console.WriteLine($"rigidY.Velocity = {rigidY.Velocity}");
rigidY.Velocity = Vector2.Reflect(rigidY.Velocity, collisionInformation.Normal); // rigidY.Velocity = Vector2.Reflect(rigidY.Velocity, collisionInformation.Normal);
Vector2 vector2 = -new Vector2(collisionInformation.Normal.X * rigidY.Velocity.X, collisionInformation.Normal.Y * rigidY.Velocity.Y); // rigidY.Velocity = Vector2.Reflect(rigidY.Velocity, collisionInformation.Normal);
Console.WriteLine($"Displacement = {vector2}"); // Vector2 vector2 = -new Vector2(collisionInformation.Normal.X * rigidY.Velocity.X, collisionInformation.Normal.Y * rigidY.Velocity.Y);
rigidY.Transform.Position += vector2 * intervalDeltaTime * 2; // Console.WriteLine($"Displacement = {vector2}");
Console.WriteLine($"rigidY.Velocity = {rigidY.Velocity}"); // rigidY.Transform.Position += vector2 * intervalDeltaTime * 2;
} // Console.WriteLine($"rigidY.Velocity = {rigidY.Velocity}");
// }
Console.WriteLine($"/////////////////////////////////////////////"); Console.WriteLine($"/////////////////////////////////////////////");
colliders[colliderIY].RecalculateVertices(); colliders[colliderIY].RecalculateVertices();
colliders[colliderIX].RecalculateVertices(); colliders[colliderIX].RecalculateVertices();