작성
·
29
0
안녕하세요, 최근 강의 듣고 따라가고 있는 unity 입문자입니다.
매번 테스트 하실 때 따라 테스트 하면서 진행했는데, 이번 강의 편 마지막 테스트 할 때 보니 파워업 아이템을 먹었는데 player가 파괴되면서 enemy bullet 1이 player 파괴된 자리 근처에 생성되는 현상이 있습니다.
디버깅을 어떻게든 해보고 해결하고 싶은데, 사실 방법을 잘 모르겠습니다 ㅠㅠ 어떻게 확인해볼 수 있을까요?
ItemController, PlayerController, PowerUpController 내용은 확인했습니다만 별다른 점을 못 느꼈습니다.. EnemyBulletController에서도 어느 부분을 건드려야 할 지 고민입니다.. 혹시 참고할 만한 팁이 있을까요?
답변 5
0
안녕하세요! 문제를 해결하여 마지막으로 댓글 답니다. 원인은 player의 bullet2가 enemybullet으로 세팅되어있었고, script도 EnemyBulletController로 매핑되어있었습니다.
아무래도 prefab만들고 옮기고 하는 과정에서 오류가 발생한 듯 합니다!
강의 차근차근 잘 따라가고 있습니다. 마음이 급해져서 서둘러 해결하고 싶은 마음에 질문을 올렸었는데요, 차분히 자고 일어나 다시 찾아보니 찾을 수 있었습니다.
선생님께서 설명을 잘 해주셔서 이만큼 따라왔습니다! 마지막 강의도 잘 들어보겠습니다. 감사합니다 :)
0
정정 드립니다. Boss 관련소스 전부 주석처리하고 테스트 해도 동일 현상이 발생합니다 ㅠㅠ 아무래도 앞부분 강의 다시 보고 검토해봐야할 것 같습니다 ㅠㅠ 감사합니다!
0
EnemyBulletController에서 FireBullet() 을 주석처리, 적 총알이 플레이어에게 오지 않도록 하고 테스트 한 결과,
파워업을 먹는 동시에 파워업도 되지만, 적 총알이 플레이어에게 부딪힌 것으로 인식되어 플레이어가 파괴되는 현상이 있습니다.
즉, powerup의 로직은 전부 진행한 이후, EnemyBulletController의 OnTriggerEnter2D()가 실행되며, PlayerController의 OnTriggerEnter2D()가 실행되는데요, EnemyBulletController 내의 함수가 실행되는 것도 어느 부분에서 발생하는 것인지 찾을 수 가 없습니다(파워업에는 PowerUpController가 매핑되어있습니다.)
또한, PlayerController에서도 Tag가 enemyBullet일 때 파괴되는 로직이 실행됩니다.
PowerUp prefab의 tag 는 PowerUp으로 태그값이 다른데 혹시 어디서 더 확인해볼 수 있을까요?
0
Debug.Log()로 확인해보니 파워업 획득을 하면 적 총알 입장에서 player를 만난 것 처럼, 'EnemyBulletController'의 아래 소스가 실행되는 것으로 보입니다.
'플레이어 파괴'가 콘솔에 찍히는데, 이게 순서대로 찍히는 것인지 아닌지 잘 모르겠어요 ...
private void OnTriggerEnter2D(Collider2D collision)
{
Debug.Log("적 총알입장에서 충돌");
if (collision.CompareTag("Player"))
{
Debug.Log("플레이어 파괴");
Destroy(gameObject);
}
if (collision.CompareTag("BoomMissile"))
{
Destroy(gameObject);
}
}
-1
안녕하세요, 인프런 AI 인턴입니다. LHwn_13님.
파워업 아이템을 먹었을 때 예상치 못하게 플레이어가 파괴되는 현상은 주로 충돌 처리 로직에서 발생할 수 있습니다. 이를 해결하기 위해 다음 몇 가지 사항을 검토해 보세요:
충돌 체커: 플레이어와 파워업 아이템의 충돌 검사 로직을 확인해보세요. OnTriggerEnter
혹은 OnCollisionEnter
메서드에서 파워업을 체크할 때 각기 다른 태그나 레이어가 설정되어 있는지 확인하세요.
태그 확인: PowerUp과 Enemy나 Player의 태그가 정확히 설정되어 있는지 확인해주세요. 오타나 잘못된 태그 설정 때문에 잘못된 충돌처리가 이루어질 수 있습니다.
디버깅: Debug.Log()
명령어로 OnTriggerEnter
또는 OnCollisionEnter
에서 호출될 때의 태그와 오브젝트 이름을 출력하여 어떤 오브젝트들이 충돌하는지 파악할 수 있습니다.
스크립트 검토: ItemController, PlayerController, PowerUpController, 그리고 EnemyBulletController 내에서 충돌 처리 부분의 로직이 서로 엇나간 부분이 없는지 확인하세요. 각각의 스크립트에서 충돌 처리가 명확히 하고 있는지 체크하세요.
관련된 문제 해결을 위한 추가적인 안내는 아래의 유사한 질문 게시물을 참고하시기 바랍니다:
디버그시 발생하는 문제 & 질문 - 유사한 충돌 및 디버깅 문제에 대한 해결 방법과 팁이 포함된 게시물입니다.
이러한 방법들이 문제 해결에 도움이 되길 바랍니다. 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.
저는 질문자님의 이해를 돕고자 지식공유자님의 기존 답변을 참고하여 유사한 답변 링크를 추천해드리고 있습니다. 현재 베타 기능으로 답변이 만족스럽지 않을 수 있는 점 양해 부탁드립니다. 🙏 추가적으로 궁금한 점이 있으시면, 이어서 질문해 주세요. 곧 지식공유자께서 답변해 주실 것입니다.