LineRenderer를 통해 총의 궤적 표현하기
유니티의 LineRenderer 컴포넌트는 인게임에서 선을 그려주는 컴포넌트다. LineRenderer를 아주 짧은 시간 켜줌으로써 총알이 날아가는 듯한 표현을 해줄 수 있다.
_muzzleRenderer.enabled = true; // LineRenderer 활성화
_muzzleRenderer.SetPosition(0, Muzzle.position); // LineRenderer의 시작점과
_muzzleRenderer.SetPosition(1, _hitInfo.point); // 끝점 지정
StartCoroutine(ShootFireCoroutine());
LineRenderer 컴포넌트를 muzzleRender라고 정의했고, 이를 활성화한 뒤에 Coroutine을 통해 일정 시간 이후에 꺼주는 코드를 작성했다.
조작의 편리성을 위해서 에임 어시스트 기능을 추가하고 싶다.
Raycast - Visualize
레이캐스트를 구현해도 실제로 눈에는 보이지 않기 때문에, 실제로 제대로 충돌을 반응하는지, 원하는 방향으로 레이캐스트 하고 있는지 알 방법이 없다. 레이캐스트를 시각화함으로써 제대로 감지하지 못하는 이유나 Ray의 distance같은 값들을 직접 확인해볼 수 있다. 디버깅에 큰 도움이 된다!
Raycast - LayerMask
레이캐스트를 통해서 특정 레이어의 충돌만 감지하고 싶을 때는, LayerMask를 사용해야 한다.
위 사진처럼 하나의 프리팹에 여러 오브젝트가 존재하고, 여러 Collider 을 지니고 있다면 각각 Layer를 지정해줘서 레이캐스트가 원하는 Collider에만 충돌을 감지할 수 있도록 할 수 있다.
"특정 Layer" 과의 충돌만 감지하고 싶다면,
int layerMask = 1 << LayerMask.NameToLayer("Enemy");
if (Physics.Raycast(Muzzle.position, transform.forward, out _hitInfo, mg_shootRange, layerMask))
이런 식으로 작성할 수 있다. 레이캐스트는 "Enemy" 레이어만 충돌을 감지한다.
"여러 Layer" 들과의 충돌만 감지하고 싶다면,
int layerMask = (1 << LayerMask.NameToLayer("Enemy")) + (1 << LayerMask.NameToLayer("Wall"));
if (Physics.Raycast(Muzzle.position, transform.forward, out _hitInfo, mg_shootRange, layerMask))
이런 식으로 작성할 수 있다. 이 때, 레이캐스트는 "Enemy" 레이어와 "Wall" 레이어만 충돌을 감지한다.
"특정 Layer"를 제외하고 충돌을 감지하고자 한다면,
int layerMask = (-1) - (1 << LayerMask.NameToLayer("OnlyCollidePlayer"));
if (Physics.Raycast(Muzzle.position, transform.forward, out _hitInfo, mg_shootRange, layerMask))
이런 식으로 작성할 수 있다. 이 때, 레이캐스트는 "OnlyCollidePlayerl" 레이어만 충돌을 무시한다.
프로그래밍 디자인 패턴
https://www.youtube.com/watch?v=iyeRmq24HVk&t=1572s
이번에 Unity Korea에서 유니티에서의 프로그래밍 디자인 패턴에 대한 영상을 공개했다. 유익한 내용일 것 같아서 영상을 보며 공부했다. 실제 지금 진행중인 개발에 사용할 수 있는 아이디어들이 많았다!
새로운 프로젝트를 시작하다
팀원과의 새로운 프로젝트가 시작되었다. 6개월간 지원금도 받고, 대학생활에서의 마지막 게임개발일듯 하여 최선을 다해볼 생각이다. 개발이 진행되는 6개월간 스팀 얼리엑세스 페이지 개설까지를 목표로 삼았다.
기존에 개발하던 게임을 그대로 가져가려고 했지만, 새로운 게임을 개발하기로 마음먹었다. 개발이 동결된지 오랜 시간이 지났기도 했고, 서로 이것저것 진절머리가 난 프로젝트였기 때문이다.
이전 프로젝트에서 배운 교훈들을 가지고 게임을 기획했다. 다음과 같은 부분들을 주의하며 이야기를 나눴다.
- 너무 큰 볼륨은 금지
- 3개 이상의 맵은 금지
- 참신함에 집착하지 말기
- 레퍼런스를 정하고, 모방해보기
- 예술병 금지
이번에 정한 레퍼런스는 "뱀파이어 서바이벌"이고, 여기에 살을 더하는 형식으로 기획안을 작성했다. 플레이어는 토템을 활용하는 "토템술사". 토템을 설치하고, 토템에 스킬을 부여해서 토템이 직접 싸우도록 하는 디펜스 게임이다.
원래는 "액션성을 많이 살리고, 직접 빌드를 짜는 뱀파이어 서바이벌" 이라는 키워드를 내걸었는데, 아이디어를 발전시켜 나가면서 완전히 새로운 아이디어가 탄생했다. 결과적으로 마음에 드는 아이디어가 나온 건 맞지만, 액션성이 사라진건 다소 아쉬웠다!
적은 사방에서 몰려오고, 어떤 오브젝트를 지키는 디펜스 게임이 될 것 같다. 뱀파이어 서바이벌과는 거리가 많이 멀어졌지만, 서로 괜찮은 아이디어가 나온 것 같아서 흥분했었다.
우리는 기본적인 틀을 잡아놓은 기획 문서를 작성했고, 세세한 디테일은 개발이 지나면서 챙기기로 했다. 어차피 게임 개발을 하다보면 수도없이 많은 변화를 겪게 될 것이라 생각했고, 너무 많은 기획을 가지고 가면 오히려 경직될까봐 걱정했기 때문이다. ... 너무 많은 문서는 별로기도 하고.
새로운 여정을 떠나니 가슴이 설레이기도 하면서, 동시에 걱정이 많아졌다. 너무 바쁜 지금 하나의 프로젝트를 더 진행해야 하니.. 잠은 제대로 잘 수 있을까...
대학원 제의를 받다
나는 학원과는 거리가 먼 사람인 줄 알았다. 오늘 교수님과의 미팅에서, 교수님께서 앞으로의 진로에 대해 여쭤보셨다. 나는 대기업보다는 직접 프로젝트를 주도하며 뛸 수 있는 콘텐츠 프로그래머가 되고 싶다고 말씀드렸다. 그 때 교수님께서 대학원에서의 연구 경험이 더 좋은 기업에 갈 수 있는 기회를 주고, 장래에 더 높은 연봉을 받는 프로그래머가 되는 데에 도움이 될 것이라고 말씀해주셨다. 그런 말과 함께, 대학원에 흥미가 있다면 말해 달라. 라고 말씀해주셨다. 갑자기 진행된 대학원과 연구실의 이야기에 순간 벙쪘는데, 동시에 너무나 좋은 기회가 왔음을 직감했다. 이전부터 석사과정에 대한 관심이 있었는데, 나같은게 가능한가? 라는 고민 때문에 배제하고 있었다. 하지만 교수님이 직접 연구실에 관심이 있냐고 여쭤봤다면, 반드시 잡아야 할 기회가 온 것이라고 생각한다. 전액 장학금과 연구비도 지원해준다고 하니, 원하는 공부를 더 할 수 있음과 더 좋은 기업에 갈 수 있는 기회가 찾아온 것이다.
가뜩이나 자존감이 떨어지던 최근에, 나의 가능성을 봐준 교수님에게 감사하기도 했고, 불쑥 찾아온 기회에 너무 기뻐 관심있다고 말씀 드렸다. 가고 싶다고 갈 수 있는 것은 아니라고 생각하기에, 지금부터 학업에 최선을 다하기로 다짐했다. 원래 필요 이상의 학점을 챙기지 않는 편이었는데, 이제는 최대한 높은 학점을 받을 수 있도록 해야겠다. (4학년 1학기지만.)
이렇게 찾아온 소중한 기회를 확실하게 잡아야겠다. 교수님과의 캡스톤 디자인을 성공적으로 마치고, 졸업 논문까지 잘 마무리해야겠다. 시험 공부도 열심히 해야겠다. 이번에 듣는 강의들의 난이도가 상당한데, 이럴 줄 알았다면 좀 더 쉬운 강의들을 수강했을 것이다.......ㅜ
저번 주까지만 해도 매우 우울한 나날들이 계속되었다. 지원한 기업의 직무 테스트를 망치기도 했고, 진행중인 프로젝트가 너무 많아 잠도 많이 못잤다. 하지만 좋은 기회들이 최근에 찾아오고 있다. 나의 가능성을 봐준 교수님이 있다. 지금이 바로 최선을 다할 때다. 힘내자..!
새로운 프로젝트도 시작했고, 대학원 제의도 받아보다니... 버티다 보면 기회가 찾아오는구나..! 찾아온 기회를 버리지 않도록 노력하자.
"우울이 하늘을 덮어버린다고 해도,
끝이 보이지 않는 비가 내린대도,
미래를 사랑할 수 있어."
King Gnu, Don't Stop the Clocks"
'Games > DevLogs' 카테고리의 다른 글
[DevLogs] 구체 플레이어 구현 - 2, 이동, 공격, 애니메이션 (0) | 2024.06.07 |
---|---|
[DevLogs] 구체 로봇 플레이어 만들기 - 아이디어와 기본 이동 (0) | 2024.05.28 |
[DevLog] 맥북, 발표, 그리고 논문 (2) | 2024.05.14 |
댓글