목차
Cooking Knight 2일차
오늘의 목표는 Enemy를 완성하고, Enemy와 Player 간의 상호작용(공격 피격)을 완성, 그 후에는 dead 로직을 마무리!
이렇게 하면 배틀로직은 끝이 난다.
욕심을 부리자면 StageScene을 플레이하는 느낌을 내기 위해 카메라 영역을 제한하거나, EnemySpawnManager를 제작하여 사냥터 느낌을 주고 싶다.
Physics2D Layer Collision Matrix
플레이어 혼자만 서있고 움직일때는 Collision2D + Rigidbody2D를 둘 다 가져도 괜찮았다!
Enemy가 생성되기 전까지는...
Enemy 또한 Player와 같은 방법으로 이동이 구현되기 때문에 서로 충돌하는 것이 문제였다.
우리 게임은 메이플스토리처럼 적이 플레이어와 부딪히면 플레이어가 데미지를 입는 방법으로 전투가 진행되기 때문에, 플레이어와적이 서로 충돌해서 겹쳐질 수 있어야한다!
Enemy의 Rigidbody2D에서 Contraints에서 X와 Y를 Freeze 했더니 Rigidbody2D를 기반으로 움직일 수 없었고,
Circle Collider 2D에서 Is Trigger를 켜서 플레이어 Collider와 충돌하지 않게 하려고 했더니 Ground Collider랑도 충돌하지 않아서 땅 아래로 떨어져버렸다.

이때! 코드상에서 Player Collider를 무시하는 방법도 있겠지만, 아무래도 가장 편하고 직관적인건 Project Setting에서 바꿔주는 것 같다.
Physics 2D -> Layer Collision Matrix에서 Enemy와 Player가 교차하는 부분의 체크박스를 끌 수 있다.
이렇게 되면 Player와 Enemy 사이의 Collision 물리연산을 아예 안하게 된다.

따라서 Enemy와 Player가 부딪혀서 Player의 피격을 연출하려면 또 다른 체크 방법을 찾아야하는데,
Model 하위에 HitBox 빈 프로젝트를 만들어두고 Collider를 하나더 달아서 is trigger 체크를 한 뒤, OnTriggerEnter로 충돌 이벤트만 감지해서 HitState으로 전환시켜주려고 한다.
느낀점
오늘 뭔가 집중이 잘 안되서 목표대로 못했다.
구현을 하다보니까 플레이어 이동상태와 액션상태를 병렬로 나눈게 계속해서 신경쓰여서 리팩토링을 해야 개발이 조금 더 원활해질 것 같다.
내일 학습 할 것은 무엇인지
내일 정오 쯤까지 피격, 사망 구현을 마치면 그것으로 프로토타입을 완성해보기로 했다.
그리고 튜터님께 조언을 얻은 대로 Enemy Reward 메소드에서 ItemManager에 드랍할 아이템 생성요청을 하면, ItemManager (생성기능: 팩토리 패턴 추천 받음)에서 오브젝트 풀링 매니저에 접근해서 생성(하는 척 오브젝트 풀에서 끄집어쓰기)하는 방식으로 아이템 드랍을 구현해야한다.
무엇보다! 점심시간에 시간이 남으면 이동상태와 액션상태를 병렬로 나눈 것을 리팩토링! 해야할 것 같다.
이걸 해야 앞으로의 개발 프로세스에서 보다 편하게 유지보수를 할 수 있을 것 같다.
'부트캠프 > 본캠프' 카테고리의 다른 글
| [내일배움캠프_2025SEP04] Cooking Knight 4일차 (0) | 2025.09.04 |
|---|---|
| [내일배움캠프_2025SEP03] Cooking Knight 3일차 (0) | 2025.09.03 |
| [내일배움캠프_2025SEP01] Cooking Knight 1일차 (0) | 2025.09.01 |
| [내일배움캠프_2025AUG29] Idle Adventure 제출, 구조에 대한 아이디어 (0) | 2025.08.29 |
| [내일배움캠프_2025AUG28] 3D 방치형 RPG Idle Adventure 3일차 (0) | 2025.08.28 |