From 4e95a3a42021b740a8a17c35f3d343faefdae303 Mon Sep 17 00:00:00 2001 From: Syntriax Date: Mon, 29 Jan 2024 12:51:21 +0300 Subject: [PATCH] feat: Ball Bounce Depending on Side Distance --- Engine | 2 +- Game/Behaviours/MovementBallBehaviour.cs | 6 +++++- 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/Engine b/Engine index 1c7d941..d7d53e4 160000 --- a/Engine +++ b/Engine @@ -1 +1 @@ -Subproject commit 1c7d941bc177d5c3fe24b428c1b89d5c2025642f +Subproject commit d7d53e467a9fe118c8ec9e93ee97a3bd64b1208e diff --git a/Game/Behaviours/MovementBallBehaviour.cs b/Game/Behaviours/MovementBallBehaviour.cs index e7b6625..56f7d9d 100644 --- a/Game/Behaviours/MovementBallBehaviour.cs +++ b/Game/Behaviours/MovementBallBehaviour.cs @@ -44,6 +44,10 @@ public class MovementBallBehaviour : BehaviourOverride private void OnCollisionDetected(ICollider2D collider2D, CollisionDetectionInformation information) { - rigidBody.Velocity = rigidBody.Velocity.Reflect(information.Normal); + // if (information.Left.BehaviourController.GameObject == GameObject) + if (Syntriax.Engine.Core.Math.Abs(information.Normal.Dot(Vector2D.Right)) > .25) + rigidBody.Velocity = information.Left.Transform.Position.FromTo(information.Right.Transform.Position).Normalized * rigidBody.Velocity.Magnitude; + else + rigidBody.Velocity = rigidBody.Velocity.Reflect(information.Normal); } }