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

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

1. Создайте пустой объект и добавьте ему компонент Rigidbody2D, который будет отвечать за физику квадратика.

[SerializeField] private Rigidbody2D rb;

2. Добавьте квадратику компонент BoxCollider2D, чтобы у него была коллизия и он мог взаимодействовать с другими объектами, включая портал.

[SerializeField] private BoxCollider2D boxCollider;

3. Создайте еще один пустой объект, который будет служить порталом. Добавьте ему компонент BoxCollider2D и настройте размеры портала.

[SerializeField] private BoxCollider2D portalCollider;

4. В методе OnCollisionEnter2D(Collision2D collision) квадратика обработайте событие взаимодействия с порталом. Проверьте, что коллайдер квадратика пересекается с коллайдером портала, и измените значение гравитации, присвоив полю gravityScale компонента Rigidbody2D новое значение, например, -1.

private void OnCollisionEnter2D(Collision2D collision)
{
    if (collision.collider == portalCollider)
    {
        rb.gravityScale = -1f;
    }
}

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

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