본문 바로가기

유니티 2D

유니티 - 탄막 슈팅 게임을 만들자 (6), 충돌, 그 불필요한 연산을 삭제하기. 연출을 사용하자! 안녕하세요! 윈디입니다.지난 시간에는 프레임 드랍을 해결하기 위해 프로파일러를 확인하고 문제점을 찾아서 해결하는 법을 공부해 보았는데요, 며칠 더 코드를 다듬다 보니, 이런 방법도 있다! 라는 것을 생각해 내서 새로이 포스트를 작성하게 되었습니다! 이 방법은 생각보다는 적용범위가 제한적인 방법이기에, 일반적인 방법이라기 보다는, 게임을 만드시다가 사용할 수 있는 꿀팁 정도로 생각하시면 될 거 같아요! 지난번에 사용했던 아이템 흡수를 예로 들어 볼게요. 충돌시간을 분산시킴으로서 어느정도 문제를 해결하는 듯 했으나.. 몇몇 상황에서는 (플레이어의 위치에 따라)아이템끼리 많이 겹칠 경우에 렉이 나게 되더라구요. 그래서 새로운 해결책을 생각해 보는 와중에 생각이 떠올랐습니다.일단 유저들이 게임 안에서 보는 것은.. 더보기
유니티 - 탄막 슈팅 게임을 만들자 (5), 프레임 드랍을 해결하기. 안녕하세요, 윈디입니다. 지난번에 탄 삭제를 하도록 만들때, 이벤트와 델리게이트를 사용해서 탄을 삭제하는 방법을 사용해서 탄을 한번에 삭제를 했었는데요,그 이후 저는, 탄을 삭제하고 아이템으로 변한 탄들이 플레이어에게 점수로 들어가는 식으로 구현을 했었습니다.이렇게 탄을 한 프레임에 모두 삭제를 하다보니까, 순간적으로 렉이 발생하더라구요.이 렉을 해결하기 위해서는 당연히 정확한 원인을 파악해야겠죠?유니티의 프로파일러를 돌려서 확인해 보았습니다. 프로파일러는 유니티의 Windows 메뉴에서 확인하실 수 있습니다. 단축키는 컨트롤+7 입니다.프로파일러를 킨 상태로 게임을 실행하면 자동으로 Cpu 사용량이 기록이 됩니다.그래서 보스를 죽이는 시점을 확인해 봤더니..이렇게 나왔습니다. 토탈 64퍼센트나 차지하는.. 더보기
유니티 - 탄막 슈팅 게임을 만들자 (4), Atan을 이용해서 2D에서 lookAt 함수 기능을 구현해보자. 안녕하세요! 윈디입니다. 오늘은 유니티에서 기본으로 제공하는 함수, LookAt에 대해서 이야기를 해보려고 해요.LookAt은 사실 3D게임을 제작할때는 정말로 유용한 함수죠, 원하는 곳을 바로 볼 수 있으니까요.하지만 , 2D에서는 잘 적용이 되지 않는데요,(아무래도 z축이 2D에서는 표시되지 않지만 실제로 존재하기 때문인 것 같습니다만.)그래서 저희는 어떤 오브젝트가 위치 a로의 방향을 알아내서 직접 볼 수 있는 LookAt2D() 함수를 한번 구현해 볼 겁니다. 사실상 2D에서 저희가 다뤄야할 시계방향, 반시계방향의 각도는 유니티에서는 Z축의 각도입니다.직접 2D화면에 오브젝트를 올려서 회전해 보시면 바로 알게 되실 거에요. 그렇다면 방향은 어떻게 돌릴까요? 해당 프레임 안에 돌리려면, transf.. 더보기
유니티 - 탄막 슈팅 게임을 만들자 (3), itween 사용하기 안녕하세요! 윈디입니다. 7월의 첫 글이네요~!단순히 개발일지라기 보다는 좀더 배운 내용을 잘 정리할 수 있도록 쓰고 싶어서,며칠 전부터 구현한것들 움짤만 만들어 놓고서, 어떻게 써야 할까... 고민을 해 봤습니다.새로 배운 내용들도 물론 많지만, 사실 이전에 배웠던 것들의 응용이 개발을 하는데에 있어서 더 중요한 것 같아요. 한번 잘 배우면 계속 쓰기도 하구요. 그래서 이번에는 우선 구현해둔 것들을 보시면서, 어떤 것들이 사용되었는지 설명을 해 드린 다음, 거기에서 중요한 것들을 설명 드리는 것이 좋겠다는 생각을 했습니다.특히 이번 주는 보스나 일반 몬스터들의 패턴과 이펙트를 구현하느라 꽤 많은 시간을 썼기 때문에, 그런 '움직임'을 다루는 방법들을 설명드리게 될 것 같습니다. 첫번째 움짤은 자연스럽게.. 더보기
유니티 - 탄막 슈팅 게임을 만들자(1), Sin(),Cos()과 Mathf 의 사용 안녕하세요, 윈디입니다!오늘은 처음으로 보스가 탄막을 뿜어내도록 만들었습니다.지난번의 보스 패턴 구현에서 연장선상이 되겠네요. 이러한 탄막을 구하기 위해, 구현해야 하는 두 가지의 파트를 먼저 살펴보겠습니다. 첫번째는, 탄막을 '쏘는' 보스에서 구현해야 할 부분. 두번째는, 탄 자체가 움직이거나, 혹은 시야 범위에서 사라진 탄이 삭제되기 위해 필요한'탄' 내부에서 구현해야 하는 부분이 있겠습니다. 탄을 쏘는 보스의 부분부터 살펴보도록 하지요.탄을 원하는 방식대로 쏘도록 코루틴을 만들어서, 원하는 타이밍에 실행해줄 수 있도록 하면 되니까요.저는 시작하는 시점에 저런 탄을 생성할 수 있도록, SpellStart() 코루틴을 만들었습니다. IEnumerator SpellStart() { float angle .. 더보기