안녕하세요! 문제를 해결하여 마지막으로 댓글 답니다. 원인은 player의 bullet2가 enemybullet으로 세팅되어있었고, script도 EnemyBulletController로 매핑되어있었습니다. 아무래도 prefab만들고 옮기고 하는 과정에서 오류가 발생한 듯 합니다! 강의 차근차근 잘 따라가고 있습니다. 마음이 급해져서 서둘러 해결하고 싶은 마음에 질문을 올렸었는데요, 차분히 자고 일어나 다시 찾아보니 찾을 수 있었습니다. 선생님께서 설명을 잘 해주셔서 이만큼 따라왔습니다! 마지막 강의도 잘 들어보겠습니다. 감사합니다 :)
EnemyBulletController에서 FireBullet() 을 주석처리, 적 총알이 플레이어에게 오지 않도록 하고 테스트 한 결과, 파워업을 먹는 동시에 파워업도 되지만, 적 총알이 플레이어에게 부딪힌 것으로 인식되어 플레이어가 파괴되는 현상이 있습니다. 즉, powerup의 로직은 전부 진행한 이후, EnemyBulletController의 OnTriggerEnter2D()가 실행되며, PlayerController의 OnTriggerEnter2D()가 실행되는데요, EnemyBulletController 내의 함수가 실행되는 것도 어느 부분에서 발생하는 것인지 찾을 수 가 없습니다(파워업에는 PowerUpController가 매핑되어있습니다.) 또한, PlayerController에서도 Tag가 enemyBullet일 때 파괴되는 로직이 실행됩니다. PowerUp prefab의 tag 는 PowerUp으로 태그값이 다른데 혹시 어디서 더 확인해볼 수 있을까요?
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); } }