Files Remake Code — Gravity

Behavior: Flips player’s gravity only when standing on it.

public GameObject exitDoor; private int fragmentsCollected = 0; private int totalFragments = 3; void OnFragmentCollected(int id)

public Vector2 localGravity = Vector2.down; public float strengthMultiplier = 1.5f; public bool overrideGlobal = true; void OnTriggerEnter2D(Collider2D other) gravity files remake code

public class MomentumPreserver : MonoBehaviour

private Vector2 velocityBeforeFlip; void OnEnable() => EventManager.OnGravityFlip += StoreAndApply; void OnDisable() => EventManager.OnGravityFlip -= StoreAndApply; Behavior: Flips player’s gravity only when standing on it

public float gravityStrength = 9.81f; public float flipCooldown = 0.5f; private float lastFlipTime;

if (Input.GetButtonDown("FlipGravity")) GravityManager.Instance.FlipGravity(); float move = Input.GetAxis("Horizontal"); rb.velocity = new Vector2(move * speed, rb.velocity.y); // Adjust ground detection based on gravity direction Vector2 checkDirection = (GravityManager.Instance.currentGravity == GravityDirection.Down) ? Vector2.down : Vector2.up; isGrounded = Physics2D.Raycast(groundCheck.position, checkDirection, 0.1f, groundMask); // Flip player sprite visually transform.localScale = new Vector3(transform.localScale.x, (GravityManager.Instance.currentGravity == GravityDirection.Down) ? 1 : -1, 1); 1 : -1

fragmentsCollected++; if (fragmentsCollected >= totalFragments) exitDoor.SetActive(true);