From 6b565e5abc2ad68ecb0568831ab63415afb2536f Mon Sep 17 00:00:00 2001 From: Pasha Bibko Date: Fri, 28 Mar 2025 14:53:19 +0000 Subject: [PATCH] WERE FLYING IN DA AIR --- Assets/Scripts/GravityController.cs | 32 ++++++++++++++++++++++ Assets/Scripts/GravityController.cs.meta | 11 ++++++++ Assets/Scripts/Player/PlayerFixedUpdate.cs | 4 +++ 3 files changed, 47 insertions(+) create mode 100644 Assets/Scripts/GravityController.cs create mode 100644 Assets/Scripts/GravityController.cs.meta diff --git a/Assets/Scripts/GravityController.cs b/Assets/Scripts/GravityController.cs new file mode 100644 index 0000000..fa3c540 --- /dev/null +++ b/Assets/Scripts/GravityController.cs @@ -0,0 +1,32 @@ +using UnityEngine; + +public class GravityController +{ + // The only instance of the class + static GravityController s_Instance = null; + + // Constant gravity scale + const float m_GravityScale = 20.0f; + + // Private constructor to stop accidental creation + private GravityController() + { } + + public static GravityController Instance() + { + // Creates an instance if there is not already one + if (s_Instance == null) + { + s_Instance = new GravityController(); + } + + // Returns the instance + return s_Instance; + } + + public void SetScale(float scale) + { + // Sets the gravity + Physics.gravity = new Vector3(0, m_GravityScale * scale, 0); + } +} diff --git a/Assets/Scripts/GravityController.cs.meta b/Assets/Scripts/GravityController.cs.meta new file mode 100644 index 0000000..d15df9f --- /dev/null +++ b/Assets/Scripts/GravityController.cs.meta @@ -0,0 +1,11 @@ +fileFormatVersion: 2 +guid: 56c7a2685fd932c4aa322d5b48fbd2aa +MonoImporter: + externalObjects: {} + serializedVersion: 2 + defaultReferences: [] + executionOrder: 0 + icon: {instanceID: 0} + userData: + assetBundleName: + assetBundleVariant: diff --git a/Assets/Scripts/Player/PlayerFixedUpdate.cs b/Assets/Scripts/Player/PlayerFixedUpdate.cs index 6381e0d..5f69db3 100644 --- a/Assets/Scripts/Player/PlayerFixedUpdate.cs +++ b/Assets/Scripts/Player/PlayerFixedUpdate.cs @@ -79,6 +79,10 @@ public partial class PlayerMovement : MonoBehaviour if (Mathf.Abs(v.z) < 0.1f) { v.z = 0.0f; } m_Body.velocity = v; + // Doubles gravity if falling to feel less floaty + if (v.y < 0.0f) { GravityController.Instance().SetScale(2.0f); } + else { GravityController.Instance().SetScale(1.0f); } + // Clears all stored collisions m_WallCollisions.Clear(); }