본문 바로가기

게임개발339

유니티5 독학하기 그 95.4번째 걸음-레이저 발사시 발생하는 진동의 제거 안녕하세요? 지난번 포스팅에서 플레이어 캐릭터가 레이져를 발사하는 것 까지는 좋았는데, 문제는 의도하지 않는 반동이 레이져를 발사 하면서 발생하는 것을 볼 수 있었습니다. 그래서 이 의도하지 않은 반동을 어떻게 제거하는 것이 이번 포스팅에서 올릴 내용입니다. 먼저 플레이어 캐릭터 게임 오브젝트를 유니티5의 계층뷰에서 한번 선택해 보도록 합니다. 여기서 먼저 제가 생각한 가정에는 이 Mass의 값이 2로 너무 작아서 생기는 문제가 아닌가 하는 생각이 들었습니다. 그래서 한번 10으로 올려서 테스트를 해 보았습니다만, 점프만 못하고 반동은 전혀 없어지지 않았습니다. 그래서 다음에는 총알이 발사될 때마다 한번 Collider 2D를 없애보는 것을 해볼까 생각해서 BulletMove.cs 스크립트를 찾아가 보도.. 2018. 11. 2.
유니티5 독학하기 그 95.2번째 걸음-메모리 풀링의 발사체 적용 part3 안녕하세요? 그리 긴 작업이 아니기는 했지만, 그래도 어느정도 하느라 애를 먹었던 작업인 메모리 풀링을 적용해서 발사체-레이져를 발사하는 작업을 이제 마무리 할 때가 왔습니다. 먼저 유니티5의 계층뷰에서 Player 오브젝트를 선택해 보도록 합니다. 그리고 나서 메모리 풀에 얼마나 많은 발사체-여기서는 레이져의 프리펩을 만들어 줄 것이냐를 정합니다. 일단 10으로 저는 정해서 입력을 해 주었습니다. 그런데 문제가 발생했습니다. 어떻게 된 것인지 레이저가 아랬쪽 방향으로 발사가 되는 것을 확인할 수 있었습니다. 그래서 어디가 문제인가 봤더니, 제가 조작을 하면서 쓸데없이 BulletSystem의 회전을 -90 한번 더 시킨 것이였습니다. 그래서 여기는 0으로 만들어 놓았습니다. 이제서야 제가 원하는 방향으.. 2018. 10. 28.
유니티5 독학하기 그 95.2번째 걸음-메모리 풀링의 발사체 적용 part2 안녕하세요? 지난번 포스팅에서 메모리 풀링을 적용 하려고 하는데, 내용이 너무 길어서 중간에 끊었습니다. 이번 포스팅에서도 모든 내용을 다 포스팅 할수는 없어서 중간에 끊겠지만, 그래도 될 수 있는한 이해하기 쉽도록 하면서 이러저러 했던 시행착오를 기록해 보도록 하겠습니다. 우선 지난번에 만든 BulletCreate.cs 스크립트의 GunFire()메소드에서 위 스크린샷처럼 for문을 삽입해 주도록 합니다. 이 for문은 메모리풀에 저장할 최대한의 발사체-이 경우에는 레이져 빔의 갯수인데, 레이져 빔의 갯수 이상은 만들어 지지 않도록 해주는 역할을 할 수 있다고 볼 수 있습니다. 다만 한번 발사 명령을 내렸을 때, 10개가 최대한도면 모두 10개 발사되는 일이 없도록 for문에서 break; 가 있는 것.. 2018. 10. 28.
유니티5 독학하기 그 95.2번째 걸음-메모리 풀링의 발사체 적용 part1 안녕하세요? 지난번 포스팅에서 어떻게 발사체로 레이져가 나가는 것을 구현하는 데 성공했지만, 여기서 하나 심각하게 만들 수도 있다는 문제가 하나 있습니다. 일반적인 방법에서는 총알과 같은 발사체를 발사하는 명령이 내려지면, initiate()함수를 이용해서 총알을 생성해서 날리다가 일정 시점이 되면 Destroy()함수를 호출해서 생성된 발사체를 제거하라는 명령을 내려줍니다. 그런데 듣자니 이 유니티의 스크립트에서 사용하는 C#이라는 언어에서는 '가비지 컬렉터 = CG'라는 것이 있는데, 제가 알아본 바로는 물체가 제거되면 메모리에서 자동으로 제거해 주는 장치라고 합니다. 문제는 Destroy()함수가 호출이 되면, 바로 직후에 CG가 불려오는데, 이 CG를 너무 많이 호출하면 시스템에 많은 부하가 걸려.. 2018. 10. 27.