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.