Programing/Unity(C#)

[CS1061] Collision2D 타입 변수에 tag 속성을 붙일 수 없는 문제

hye3193 2023. 11. 5. 18:45

'Collision2D'에는 'tag'에 대한 정의가 포함되어 있지 않고, 'Collision2D' 형식의 첫 번째 인수를 허용하는 액세스 가능한 확장 메서드 'tag'이(가) 없습니다. using 지시문 또는 어셈블리 참조가 있는지 확인하세요. (CS1061)

OnCollision메소드에서 other.tag를 사용하려고 하니 에러가 발생했다

 

OnCollision 메소드와 OnTrigger 메소드 간의 차이가 있다면 각각 Collision2D와 Collider2D 타입의 변수를 받아온다는 건데,

https://docs.unity3d.com/ScriptReference/Collider2D.html

 

Unity - Scripting API: Collider2D

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close

docs.unity3d.com

https://docs.unity3d.com/ScriptReference/Collision2D.html

 

Unity - Scripting API: Collision2D

Success! Thank you for helping us improve the quality of Unity Documentation. Although we cannot accept all submissions, we do read each suggested change from our users and will make updates where applicable. Close

docs.unity3d.com

각각 Collider2D와 Collision2D에 대한 유니티 공식 문서다

확인해 보면 Collider2D는 속성으로 tag를 가지고 있지만

 

 

Collider2D

 

 

Collision2D는 tag가 아니라 속성으로 Collider을 가지고 있다

Collision2D

 

Collision2D는 물리적인 상호작용이 필요하기 때문에 Collider2D보다 많은 정보를 가지고 있고, 그래서 Collision2D 타입의 변수에서 바로 tag 속성을 꺼낼 수 없었던 것이다...

 

따라서 뒤에 Collision2D 내에 있는 gameObject에서 tag 속성을 꺼내주면 된다

gameObject 대신 Collider를 사용해도 작동은 되지만 그냥 gameObject로 받으면 될 것 같다