이런 디자인과 비슷하게 만들어보고 있는데,
판정선이 노트 2개가 겹친 부위에서 키를 입력하면 노트 2개다 한번에 사라져버리네요.. 몇시간동안 머리 빠지게 고민했는데 안되어서 질문드립니다...
분명 각 노트별로 생성할때 noteID 를 부여해서 1부터 차례대로 숫자 커지게 부여했고,
게임 매니저에 다음에 반응해야할 노트번호를 만들어서 이 둘이 같은 경우 그 노트를 사라지게 했는데, 게임매니저에 있는 notePassCount 값이 드르륵 올라가면서 겹쳐있는 모든 노트가 사라집니다.
gamemanager.cs
notenumbering.cs
notescript.cs
(왼쪽 키를 누르면, canbePressed 이면서 노트에 들어있는 noteID 값이 게임매니저에서 받은 노트가 생성된 수와 같을경우에 노트 deactivate)
(노트 판정)
debug.log 해보면 한번 키를 딱 눌렀는데 notehit()가 발생하고 notehit() 안에 notePasscount++가 발생하고 또 숫자가 올랐으니까 키를 눌렀을때 조건안의 수를 또 올리면서 조건을 만족시키는것 같더라구요..
근본적으로 노트의 스크립트에서 키입력을 받고 판정하는 구조가 잘못되었음 하나의 스크립트(예를들면 판정선의 스크립트)에서 키입력을 받고 노트가 닿으면 canBePressed를 활성화 하는식으로 생각해보셈
간단히 말해서 노트의 스크립트양은 최대한 줄이고 그걸 하나의 오브젝트에서 관리할 수 있는 방향으로 코드를 짜야할듯
한번 버튼을 눌렀을 때 노트 하나만 없어지게 하고 싶다는 거야? 그럼 버튼 눌렀을 때 판정 범위 안에 들어온 노트들 배열로 집은 다음 그 배열의 크기만큼 포문 돌려서 젤 가까운놈 구하고, 그 가까운놈에 대해서만 노트 처리 해주면 될거같은데
글고 윗댓처럼 키입력을 노트 스크립트에서 판단하기 때문에 내가 말한 방법을 적용하기가 어려울 거임. 판정선이라든가 스테이지 전체를 컨트롤하는 스크립트 같은 곳에서 키입력 + 노트처리까지 시켜주는 방식이 나중에 더 편할 거임. 그리고 noteId를 비교해서 노트를 사라지게 하는 방식은... 왜 굳이 이렇게 해야 하는지 모르겠음