'이 코드에 콜라이더 캐싱or 참조가 없어서, 콜라이더 감지를 못해서 충돌 문제가 일어나는걸까?'
그렇다면
'네 그럴 확률이 높습니다'
이럴거야
댓글 24
콜라이더 캐싱이 뭔 소리임?
익명(218.235)2024-10-08 15:19
답글
이 경우에는 참조겠지
ㅆㅇㅆ(124.216)2024-10-08 15:20
답글
내가 좀 실수한듯
ㅆㅇㅆ(124.216)2024-10-08 15:20
답글
유니티 안한지 5년 넘긴 했는데 코드상에 collider 없는거랑 뭔 상관임?
익명(218.235)2024-10-08 15:20
답글
콜라이더 참조를 안하면 그 콜라이더의 레이어를 어케 앎? 반대로 묻자
ㅆㅇㅆ(124.216)2024-10-08 15:21
답글
콜라이더 참조를 안한다는 게 뭔말임?...
익명(218.235)2024-10-08 15:22
답글
아니 monobehavior 상속 받아서 콜백을 오버라이드 하잖아. 콜백에서 받는 collision2d에서 collider들 참조할 수 있지. 너 유니티 안해봄?
익명(218.235)2024-10-08 15:24
답글
맞네, 내가 좀 개념 착각함 니 말이 맞다
ㅆㅇㅆ(124.216)2024-10-08 15:26
답글
내가 좀 생각을 잘못함.
ㅆㅇㅆ(124.216)2024-10-08 15:26
답글
캐싱은 이 경우에는 성능 손실의 문제지 내가 조금 생각을 잘못하고 있었음. 언리얼로 생각했다
ㅆㅇㅆ(124.216)2024-10-08 15:28
답글
고맙다 내가 잘못알고 있었던거 지적해줘서
ㅆㅇㅆ(124.216)2024-10-08 15:37
알아서 onCollider가 참조하는거 아님? 그걸 왜 굳이 따로 저장해놓음
프갤러 1(106.241)2024-10-08 15:23
답글
동적 생성되니까 참조 없으면 바로 충돌 감지 가능한지 모르지 않나
ㅆㅇㅆ(124.216)2024-10-08 15:24
현재 코드에서는 Collider2D를 캐싱하지 않기 때문에, 충돌이 발생할 때마다 GetComponent() 또는 GetComponent()를 호출하는 부분에서 성능 손실이 있을 수 있습니다. 하지만 이 성능 손실이 문제의 근본적인 원인일 가능성은 크지 않습니다. 캐싱을 통해 성능을 약간 개선할 수는 있지만, 충돌 자체가 제대로 감지되지 않는 문제는 다른 원인일 가능성이 높습니다.
그럼에도 불구하고, 콜라이더나 리지드바디를 캐싱하면 불필요한 GetComponent 호출을 줄일 수 있어 성능에 도움이 될 수 있습니다. 아래 코드에서는 Rigidbody2D와 Collider2D를 캐싱하는 방법을 반영했습니다.
캐싱된 버전의 코드:
프갤러 2(115.93)2024-10-08 15:23
진짜 제가 고대로 물어봤는데 이런 답변이 왔고 캐싱된 버전의 코드를 적용시켜봤는데도 충돌감지가 여전히 안됩니다 따흑
콜라이더 캐싱이 뭔 소리임?
이 경우에는 참조겠지
내가 좀 실수한듯
유니티 안한지 5년 넘긴 했는데 코드상에 collider 없는거랑 뭔 상관임?
콜라이더 참조를 안하면 그 콜라이더의 레이어를 어케 앎? 반대로 묻자
콜라이더 참조를 안한다는 게 뭔말임?...
아니 monobehavior 상속 받아서 콜백을 오버라이드 하잖아. 콜백에서 받는 collision2d에서 collider들 참조할 수 있지. 너 유니티 안해봄?
맞네, 내가 좀 개념 착각함 니 말이 맞다
내가 좀 생각을 잘못함.
캐싱은 이 경우에는 성능 손실의 문제지 내가 조금 생각을 잘못하고 있었음. 언리얼로 생각했다
고맙다 내가 잘못알고 있었던거 지적해줘서
알아서 onCollider가 참조하는거 아님? 그걸 왜 굳이 따로 저장해놓음
동적 생성되니까 참조 없으면 바로 충돌 감지 가능한지 모르지 않나
현재 코드에서는 Collider2D를 캐싱하지 않기 때문에, 충돌이 발생할 때마다 GetComponent() 또는 GetComponent()를 호출하는 부분에서 성능 손실이 있을 수 있습니다. 하지만 이 성능 손실이 문제의 근본적인 원인일 가능성은 크지 않습니다. 캐싱을 통해 성능을 약간 개선할 수는 있지만, 충돌 자체가 제대로 감지되지 않는 문제는 다른 원인일 가능성이 높습니다. 그럼에도 불구하고, 콜라이더나 리지드바디를 캐싱하면 불필요한 GetComponent 호출을 줄일 수 있어 성능에 도움이 될 수 있습니다. 아래 코드에서는 Rigidbody2D와 Collider2D를 캐싱하는 방법을 반영했습니다. 캐싱된 버전의 코드:
진짜 제가 고대로 물어봤는데 이런 답변이 왔고 캐싱된 버전의 코드를 적용시켜봤는데도 충돌감지가 여전히 안됩니다 따흑
애초에 상관이 없음, 알아서 해당 함수가 리지드바디에 맞춰서 작동하는건데
ㄱㄷ 좀만 보겠음
void OnCollisionEnter2D(Collision2D collision) { Debug.Log("Collision detected with: " + collision.gameObject.name); if (collision.gameObject.CompareTag("CatFace")) { Debug.Log("Valid collision with: " + collision.gameObject.name); collisionList.Add(collision.gameObject); } else if (collision.gameObject.CompareTag("Ground"))
디버그 로그 해보셈
Collider2D collider = currentCatFace.GetComponent(); 콜라이더 2D도 확인해봐라
이새끼 그냥 프리팹에 스크립트 안 넣어둔거 같은데
오
진짜 이걸지도
헐 충돌감지 돼요