[2025/05/26]TIL

오수호·2025년 5월 26일

TIL

목록 보기
22/60

이번 주는 팀 프로젝트 주간으로써 팀프로젝트 관련 트러블슈팅이나 기능구현을 중점적으로 다룬다.

이번 팀 프로젝트의 주제는 3D Survival 게임이다.

1. 맡은 역할

내가 이번 프로젝트에서 맡은 역할은 자원오브젝트의 생성과 관리이다. 서바이벌 게임에서는 다양한 자원을 캐거나 수집하여 기술테크를 올리거나, 더 좋은 건축물이나 아이템을 만들 수 있다. 서바이벌 게임에서 빠질 수 없는 요소이다.

2. 구현 방법

먼저, 자원을 캘 오브젝트를 만든 뒤 해당 오브젝트에 ScriptableObject를 하나 할당한다. 해당 ScriptableObject에는 자원을 캐면서 나오는 DropPrefab을 할당해놓는다. 자원의 체력과, 하나의 자원이 뱉어낼 자원의 총량을 설정한다. 그러면 Awake단계에서 내부적으로 자원하나를 뱉어내는데 들어가는 데미지를 계산하고, 플레이어가 해당 자원을 공격으로 캘 시 들어온 데미지만큼 자원을 뱉어내게 만든다. 자원의 체력이 0이되면, 자원은 파괴되고 사라진다.

3. 문제점

문제는 해당 자원을 캘 때, 한번에 여러 개의 Prefab이 떨어지면 해당 자원이 생성되는 공간에서 DropPrefab끼리 충돌이 발생해 자원들이 튕겨저서 날라간다거나 하는 문제가 발생하고, DropPrefab을 Instantiate할 때 각도의 변화 없이 생성하면, 자원이 아무런 생동감없이 툭하고 떨어지는 느낌이 난다. 따라서 이를 해결하기 위해서 자원이 떨어지는 위치를 리스트로 만들어 랜덤으로 생성하여 떨어지게 만들었으며, 각도또한 랜덤으로 xyz축 방향으로 90도 회전하여 생성되게 만들었다.

4. 앞으로 구현해야할 것

자원은 캐어지고나면 다시 재생성되어야하기때문에, 해당 자원을 재생성하는 respawner를 만들어야한다. 해당 동작은 내일부터 구현할 예정이다.
또한, 현재는 자원을 단순하게 Instantiate를 직접 호출하여 생성하도록 만들었지만, DropPrefab이나 자원을 캘 수 있는 오브젝트들을 생성할때 factory나 objectpool등의 디자인 패턴을 활용하여 해당 오브젝트들을 효율적으로 생성하고 관리할 수 있도록 만들어야 한다.
추가적으로는, DropPrefab이 생성될 때 플레이어가 휘두른 무기 방향으로 힘을 받으면서 떨어지면 좀 더 생동감 있게 만들 수 있을 것이다.

profile
게임개발자 취준생입니다

0개의 댓글