From 6ceea7d84ee7c63f12268ef2851c28a48f8ffa85 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Wed, 6 Dec 2023 13:50:39 +0300 Subject: [PATCH] rewaer --- Game/Game1.cs | 15 +++++++++------ Game/Physics2D/Collider2DAABBBehaviour.cs | 4 ++-- Game/Physics2D/PhysicsMath.cs | 3 +++ 3 files changed, 14 insertions(+), 8 deletions(-) diff --git a/Game/Game1.cs b/Game/Game1.cs index dab7b50..5242e6a 100644 --- a/Game/Game1.cs +++ b/Game/Game1.cs @@ -64,8 +64,9 @@ public class Game1 : Game gameObjectBall.Transform.Position = Vector2.Zero; gameObjectBall.Transform.Scale = new Vector2(1f / 51.2f, 1f / 51.2f); engine.AddRigidBody(gameObjectBall.BehaviourController.AddBehaviour()); - gameObjectBall.BehaviourController.AddBehaviour(new Vector2(.1f, .1f), 500f); + gameObjectBall.BehaviourController.AddBehaviour(new Vector2(.1f, .01f), 500f); gameObjectBall.BehaviourController.AddBehaviour().Assign(spriteBall); + gameObjectBall.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One * 512f, Vector2.One * 512f); IGameObject gameObjectLeft = gameManager.InstantiateGameObject(); gameObjectLeft.Name = "Left"; @@ -74,6 +75,7 @@ public class Game1 : Game gameObjectLeft.BehaviourController.AddBehaviour(); gameObjectLeft.BehaviourController.AddBehaviour(Keys.W, Keys.S, 268f, -268f, 400f); gameObjectLeft.BehaviourController.AddBehaviour().Assign(spriteBox); + gameObjectLeft.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One * .5f, Vector2.One * .5f); engine.AddRigidBody(gameObjectLeft.BehaviourController.AddBehaviour()); IGameObject gameObjectRight = gameManager.InstantiateGameObject(); @@ -83,6 +85,7 @@ public class Game1 : Game gameObjectRight.BehaviourController.AddBehaviour(); gameObjectRight.BehaviourController.AddBehaviour(Keys.Up, Keys.Down, 268f, -268f, 400f); gameObjectRight.BehaviourController.AddBehaviour().Assign(spriteBox); + gameObjectRight.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One * .5f, Vector2.One * .5f); engine.AddRigidBody(gameObjectRight.BehaviourController.AddBehaviour()); @@ -90,26 +93,26 @@ public class Game1 : Game goPlayAreaTop.Transform.Position = new Vector2(0f, 288f + 20f); goPlayAreaTop.Transform.Scale = new Vector2(10240f, 40f); // goPlayAreaTop.BehaviourController.AddBehaviour().Assign(spriteBox); - goPlayAreaTop.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One, Vector2.One); + goPlayAreaTop.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One * .5f, Vector2.One * .5f); engine.AddRigidBody(goPlayAreaTop.BehaviourController.AddBehaviour()); IGameObject goPlayAreaBottom = gameManager.InstantiateGameObject(); goPlayAreaBottom.Transform.Position = new Vector2(0f, -(288f + 20f)); goPlayAreaBottom.Transform.Scale = new Vector2(10240f, 40f); // goPlayAreaBottom.BehaviourController.AddBehaviour().Assign(spriteBox); - goPlayAreaBottom.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One, Vector2.One); + goPlayAreaBottom.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One * .5f, Vector2.One * .5f); engine.AddRigidBody(goPlayAreaBottom.BehaviourController.AddBehaviour()); IGameObject goPlayAreaRight = gameManager.InstantiateGameObject(); goPlayAreaRight.Transform.Position = new Vector2(512f + 20f, 0f); goPlayAreaRight.Transform.Scale = new Vector2(40f, 5760f); // goPlayAreaRight.BehaviourController.AddBehaviour().Assign(spriteBox); - goPlayAreaRight.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One, Vector2.One); + goPlayAreaRight.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One * .5f, Vector2.One * .5f); engine.AddRigidBody(goPlayAreaRight.BehaviourController.AddBehaviour()); IGameObject goPlayAreaLeft = gameManager.InstantiateGameObject(); goPlayAreaLeft.Transform.Position = new Vector2(-(512f + 20f), 0f); goPlayAreaLeft.Transform.Scale = new Vector2(40f, 5760f); // goPlayAreaLeft.BehaviourController.AddBehaviour().Assign(spriteBox); - goPlayAreaLeft.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One, Vector2.One); + goPlayAreaLeft.BehaviourController.AddBehaviour().AABBLocal = new AABB(-Vector2.One * .5f, Vector2.One * .5f); engine.AddRigidBody(goPlayAreaLeft.BehaviourController.AddBehaviour()); // IGameObject goPlayAreaCenter = gameManager.InstantiateGameObject(); @@ -152,7 +155,7 @@ public class Game1 : Game if (Keyboard.GetState().IsKeyDown(Keys.E)) gameManager.Camera.Rotation -= gameTime.ElapsedGameTime.Nanoseconds * 0.000025f; - + Console.WriteLine(gameObjectBall.Transform.Position); // if (Keyboard.GetState().IsKeyDown(Keys.N)) // seconds = 39.12f; // if (Keyboard.GetState().IsKeyDown(Keys.Space)) diff --git a/Game/Physics2D/Collider2DAABBBehaviour.cs b/Game/Physics2D/Collider2DAABBBehaviour.cs index c432ba8..da7cc45 100644 --- a/Game/Physics2D/Collider2DAABBBehaviour.cs +++ b/Game/Physics2D/Collider2DAABBBehaviour.cs @@ -45,8 +45,8 @@ public class Collider2DAABBBehaviour : BehaviourOverride, ICollider2D public void Recalculate() { AABBWorld = new AABB( - AABBLocal.LowerBoundary + Transform.Position, - AABBLocal.UpperBoundary + Transform.Position + AABBLocal.LowerBoundary.Scale(Transform.Scale) + Transform.Position, + AABBLocal.UpperBoundary.Scale(Transform.Scale) + Transform.Position ); vertices.Clear(); diff --git a/Game/Physics2D/PhysicsMath.cs b/Game/Physics2D/PhysicsMath.cs index 3f645f3..273e503 100644 --- a/Game/Physics2D/PhysicsMath.cs +++ b/Game/Physics2D/PhysicsMath.cs @@ -14,6 +14,9 @@ public record AABB(Vector2 LowerBoundary, Vector2 UpperBoundary); public static class PhysicsMath { + public static Vector2 Scale(this Vector2 original, Vector2 scale) + => new Vector2(original.X * scale.X, original.Y * scale.Y); + public static Vector2 ClosestPointTo(this Line line, Vector2 point) { // Convert edge points to vectors