총알의 프리팹은 무척 간단하게 만들었다.
플레이어 위치에서 발사 되서, 하늘로 날아가는 단순한 총알 프리팹이다.
나중에 총알 처리를 위한, 태그만 3개 두고, 스피드 하나 띡 넣어주었다.
덤으로 플레이어가 컷신이나, 대화 도중에 움직일 수는 있지만
총알은 쏠 수 없게 만들어주기 위해
플레이어 컴포넌트에 AddComponent<PlayerShootable>(entity); 를 하나 추가 시켜놓았다.
해당 컴포넌트는 IEnableComponent이다.
위의 이미지는 발사 버튼에 대응하는 시스템이다.
원래 조작 관련 시스템도 하나 있는데..
이동, 애니메이션이랑 같은 시스템에 있는건 비효율적이라 느꼈다.
새롭게 System 하나 파줬다.
해당 시스템은 특별히 딜레이, PlayerShootable가 관여한다.
조건을 만족하지 못하면 발사 시스템은 동작하지 않게 되는 시스템이다.
나중에 Sub 발사 시스템도 필요한데.. 똑같이 시스템 하나 파야 할 것 같다.
총알 업데이트 시스템은 진짜 간단하다.
구현하고 나니까, 애네들은 따로 Job을 파서 병렬적으로 구현해도 좋을 것 같다는 생각을 했다.
이후에 수정할 것이다.
해당 시스템은, Bullet Tag를 가진 모든 엔티티들에 대응하는 시스템이다.
Bullet들은 화면 밖으로 나가면 자동으로 커맨드 버퍼가 삭제해주도록 한다.
커맨드 버퍼 시작 시점을 End Simulation 그룹에서 처리해주는게 좋을 것 같긴한데..
일단은 문제가 없다.
근데 이 친구가 미친듯이 에러를 내뿜고 있는데
중간에 ManagedAPI가 BurstCompiler 동작에 방해가 되서 그러는거 같다.
어처피 상수값들인데.. 그냥 하드코딩으로 박아버려야 하나 고민되고 있다.... Create 단에서 정해주면 문제 없을려나?
오늘 일지 끗!
댓글 1