Hej

Mam problem ze zrozumieniem tego kodu:

    public LayerMask playerLayer;

    private bool moveLeft;
    private bool stunned;
    private bool canMove;

    public Transform left_Collision, right_Collision, top_Collision, down_Collision;
    private Vector3 left_Collision_Position, right_Collision_Position;

    Collider2D topHit = Physics2D.OverlapCircle(top_Collision.position, 0.2f, playerLayer);
    if(topHit.gameObject.tag == "Player")
            {
                if(!stunned)
                {
                    topHit.gameObject.GetComponent<Rigidbody2D>().velocity =
                        new Vector2(topHit.GetComponent<Rigidbody2D>().velocity.x, 7f);
                    canMove = false;
                    myBody.velocity = new Vector2(0, 0);
                    anim.Play("Stunned");
                    stunned = true;
                }
            }

Domyślam się, że ciężko jest się w nim zorientować nie znając jego całego kontekstu. Stąd mam pytanie odnośnie tego co zwraca linia:

Collider2D topHit = Physics2D.OverlapCircle(top_Collision.position, 0.2f, playerLayer);

Pytanie wynika z kolejnej linijki:

if(topHit.gameObject.tag == "Player")

Skrypt jest załączony do obiektu "Snail" i wywołanie "gameObject" to referencja do tego obiektu. Ale w tym przypadku używam "topHit.gameObject", przez co domyślam się, że "topHit" jest referencją do obiektu z, którym zachodzi kolizja?

Znalazłem w dokumentacji takie zdanie This function returns an array of Collider2D that overlap the circle.