작성
·
125
답변 2
0
로직은 정상적으로 동작하는데 폭발 이펙트가 다시 발생한다면 , BigExplosion 프리팹의 ParticleSystem 컴포넌트에 Loop 옵션은 언체크되었는지를 확인해주세요.~
BehaviorGraph는 정상적으로 설정하셨습니다. Log가 2번 호출된다는 것은 Repeat 노드로 2번 들어오는 것으로 보입니다. 다음을 확인해주세요.
SpiderController.cs의 OnCollisionEnter 메소드 안에 yield break를 하셨는지
주인공과 충돌 감지를 위해 Spider에 추가한 BoxCollider의 크기가 MeshCollider와 중첩되어 있을 경우에는 Bullet이 두개의 Collider에 충돌하면 OnCollisionEnter 콜백이 2번 발생합니다. 이 경우 BoxCollider를 Bullet과 충돌하지 않도록 아래쪽으로 내려주셔야 합니다.
아마도 두번째가 유력한것으로 생각됩니다. 안되시면 다시 질문글 올려주세요~
boxcollider를 없애도 2번 호출됩니다. 2번째 호출은 wait for 5 seconds 이후 발생하는데 wait한 이후에 다시 repeat이 호출될 수 있는건가요
Wait for 5 seconds 한 이후에 다음 노드에서 Spider를 Destroy하기 때문에 해당 게임오브젝트는 삭제됩니다. 따라서, 다시 호출될 수 가 없습니다.
SpiderController의 OnCollisionEnter 에서 Debug.Log를 추가하시어 충돌 콜백함수가 1번만 호출되는 지 또는 2번 호출되는지를 확인해 보세요.
1번만 로그가 찍히면 충돌 콜백함수는 이상없는 것이구요. 이때는 BehaviorGraph 쪽에 설정을 다시 한번 확인 해주세요.
2번 호출되는 경우에는 Bullet과 충돌할 때 양쪽(Bullet, Spider)에 충돌하는 Collider가 각각 1나씩 있는지를 확인하셔야 합니다.
Debug.Log는 한번만 찍힙니다.
저 Behavior Graph에서 Destroy Self 아래에 Wait for 1 seconds를 추가하면 폭발이 한 번만 발생하고 끝나요.. 이유가 뭔지 모르겠습니다
+repeat문 조건을 until success로 변경하는 경우에도 폭발이 한 번만 발생하는 것 같습니다.
답변이 늦었습니다.
코드와 BG를 동일하게 했음에도 이 같은 결과가 발생한다면 Repeat 노드에서 반복적으로 하위 노드를 타고 들어가는것으로 추측해볼 수도 있습니다. 만약 그렇다고 한다면 딱 1번더 폭발효과가 나는것이 아니라 여러번 반복되어야 하는데요. 논리적으로는 설명이 빈약합니다.
이게 원인일 것 같지는 않습니다만, Play BigExplosion 노드 다음에 사망을 출력하는 Log 노드를 추가하셨는데, 해당 노들를 삭제해 보세요.
그리고 강의 코드를 확인해보아도 정상 작동하고 있습니다. 혹시 강의 풀 코드가 필요하시면 다시 글남겨주세요.
0
안녕하세요, 인프런 AI 인턴입니다. 백구님.
질문하신 ‘사망 시 폭발 로직’에서 문제가 생겨, 폭발 후 5초 후에 다시 폭발하는 현상이 발생한다고 하셨네요. 이 문제는 주로 오브젝트의 라이프사이클 관리나 관련 이벤트의 잘못된 호출 등에서 발생할 수 있습니다. 문제를 해결하기 위한 몇 가지 점검 사항을 아래에 제시합니다.
Invoke 중복 확인:
오브젝트 상태 확인:
타이머 중첩 확인:
관련된 유사한 문제와 답에 대한 토론을 확인해 보세요:
- 유니티 이벤트 중복 발생 문제 해결하기에서는 비슷한 이벤트 중복 문제를 다루고 있습니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다.
현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏
추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
loop 옵션은 언체크 되어있습니다.
기다리는 시간을 바꿔봤는데 딱 그 기다리는 시간만큼 지난 이후 없어질 때 폭발이 추가로 발생합니다.
log를 찍어봤는데 사망이 2번 호출되는 것 같습니다.