Как сделать чтобы квадратик менял гравитацию когда прикасается к порталу?

Чтобы реализовать изменение гравитации квадратика при его прикосновении к порталу в языке программирования C#, вам потребуется использовать физическую систему и коллайдеры.

  1. Создайте пустой объект и добавьте ему компонент Rigidbody2D, который будет отвечать за физику квадратика.
[SerializeField] private Rigidbody2D rb;
  1. Добавьте квадратику компонент BoxCollider2D, чтобы у него была коллизия и он мог взаимодействовать с другими объектами, включая портал.
[SerializeField] private BoxCollider2D boxCollider;
  1. Создайте еще один пустой объект, который будет служить порталом. Добавьте ему компонент BoxCollider2D и настройте размеры портала.
[SerializeField] private BoxCollider2D portalCollider;
  1. В методе OnCollisionEnter2D(Collision2D collision) квадратика обработайте событие взаимодействия с порталом. Проверьте, что коллайдер квадратика пересекается с коллайдером портала, и измените значение гравитации, присвоив полю gravityScale компонента Rigidbody2D новое значение, например, -1.
private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider == portalCollider)
    {
        rb.gravityScale = -1f;
    }
}

Теперь при прикосновении квадратика к порталу его гравитация изменится, и он будет двигаться в противоположную сторону.

Однако, следует отметить, что этот код реализует базовую логику изменения гравитации квадратика при столкновении с порталом. Для достижения более сложной и интересной механики, такой как инверсия гравитации только внутри портала или плавное изменение гравитации в зависимости от расстояния до портала, вам понадобится добавить дополнительную логику и обработку событий.