6/15 - 링 배치하기
오늘은 링 배치를 구현했다.
1) 링 생성버튼을 터치 후 필드에 끌어놓는 방식으로 배치하도록 했다. 짤에서는 마우스로 움직이고 있는 것 처럼 보이는데 사실은 터치하는 중이다(내 노트북은 화면 터치가 되기 때문에). 마우스/터치 겸용으로 구현했기 때문에 PC에서 마우스를 쓰든 아니면 스마트폰에서 플레이하든 똑같이 잘 배치된다. 아참, 만들다 생각난건데 생각보다 링 크기가 작다. 아무래도 내일 임시 스프라이트들의 크기를 모두 조정해야 할 것 같다.
2) 링을 필드에 끌어다 놓는 중에 현 위치가 필드의 너무 외곽이거나, 다른 링과 너무 가깝거나, 몬스터의 이동경로와 너무 가까우면 링의 사정거리 색을 붉은 색으로 하고 터치를 중지하더라도 링이 필드에 배치되지 않도록 했다. 반대로 올바른 위치면 초록색으로 하고 터치를 중지하면 실제로 링을 필드에 배치했다. 처음에는 OnCollisionEnter/Exit2D같은걸로 콜라이더가 링 근처에 들어오고 나가는 오브젝트들을 체크하는 식으로 구현하려했는데 더 좋은 방법 없을까 검색하다가 Physics2D.OverlapCircleAll() 라는 함수를 알게 되었다. 해당 함수로 주변에 있는 오브젝트들을 받아올 수 있었고 나중에 사정거리 안에 있어서 공격 대상이 될 수 있는 몬스터들을 받아올때도 저 함수를 쓰면 될 것 같다.
3) 짤에 같이 담진 않았지만 이렇게 배치된 링들은 각자 db로 부터 받은 공격 쿨타임마다 Attack()함수가 돌아가며 콘솔창에 "Attack!" 메시지를 출력하는 중이다.
4) 전투가 끝나면 배치된 모든 링을 없앤다. 이는 DeckManager에서 링이 생성될 때마다 rings라는 리스트에 저장해 둔 것을 모두 없애는 방식으로 했다.
내일 모레에 개발할 내용들은 다음과 같다. (내일은 코드포스가 있기 때문에 스킵... 백준 달려야 한다.)
- 링 제거하기 버튼 구현
- 링 배치 불가 시 빨간색 표시하면서 동시에 왜 배치 불가인지 텍스트로 보여주기(다른 링과 너무 가깝습니다/올바르지 않은 장소입니다 등..)
- 보유 RP량을 표시하는 UI 만들기 & 링 배치 시 RP 소모하기
- 링 임시 스프라이트 크기 수정하기
그리고 코드랑 주석 좀 다듬어야겠다.