※ 전문용어 최대한 배제하겠지만 외계어일 수도 있음.
오토파이어(일반 슈팅게임에서, 자동공격 같은... 아니 같은 개념)에 문제가 발생하여 지속적으로 게임 종료 문제 발견.
원인을 찾아보니, 스킬로 발동하는 공격들은 한 번에 하나밖에 존재하지 않지만 이 오토파이어는 그러한 다른 객체들과 달리 동시에 여러 개가 존재하기 때문에 객체 개개의 인덱스 문제가 발생함.
즉, 총 4개를 발사했고 3번째 공격이 적과 접촉하였는데 4개째의 공격은 화면 밖으로 넘어가서 삭제 상태, 인덱스 호출시 해당 배열의 크기로 불러오기에 4개 중 3번째에 신호가 생겨서 불러야 하는데 그 잠깐 사이 4개째가 죽어 3개 중 2개를 불러버리니 오류가 발생하던 것.
원인은 알아냈으니 이제는 오류를 수정해야할 때.
직접 로그 출력해가며 오토파이어가 동시에 최대 몇 개나 존재하는가를 판단.
따로 메소드를 만들어내 해당 배열의 크기가 그것 이하라면 무조건 계속 생성되게 만듬. 즉, 4개가 있고 3번째가 충돌했을 때 4개째가 죽어버리면 바로 하나 더 만들어버리게.
근데 당연한게 그러면... 4개째 중 3번째 부르는게 아니라 숫자(인덱스)가 하나씩 밀려서 결국 4개째 중 4번째 부르는 꼴... 역시나 오류는 수정되지 않고 강제 종료.
이게 문제점이 바로, 오토파이어가 삭제되는 경우가 2개가 있기 때문인데.
각 객체가 하나밖에 존재하지 않는 스킬들은 화면밖으로 나가서 사라지거나 아니면 적과 충돌해서 사라지거나 둘 중 하나만을 수행하는데.
이 오토파이어는 동시에 여러 개가 존재하니 어떤건 화면밖으로 나가서 사라지고 어떤건 적과 충돌해서 사라지니 난리였음.
그래서 삭제 조건을 하나 지우려고 계획.
화면밖으로 나가는 공격을 지우지 않을 수는 없으니 적과 충돌시 삭제를 지워버림.
적과 충돌시 따로 인덱스를 줘서 더 이상 공격이 보이지 않게 하고, 해당 인덱스를 지닌 공격은 더 이상 적과 충돌도 하지 않게. 그 상태로 화면 밖까지 이동하면 지워지게 만들어서 오토파이어가 삭제되는 경우의 수를 한 가지로 줄임.
근데도 오류. 왜?
아니 내 공격은 이렇게 난리인데.
적의 공격은 아무 문제가 없다. 게다가 삭제되는 조건이 위처럼 두 개(화면밖을 나갔을 때, 충돌했을 때)인데도 아무 문제가 없어. 프로그래밍의 꽃, 복붙을 통해 적의 공격이 발생하는 조건과 삭제조건을 그대로 베껴서 내 공격에 적용! 이제 되었겠지?
근데도 오류. 왜??????????????
하. 하다하다 도저히 안 되겠어서 일단 보류하려고 원래 방식으로 복귀.
오류 없어짐........
..........?????????
오류를 수정하기는 했는데, 나도 내가 뭘 해서 수정했는지를 모르겠다.......
Comment ' 4