ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • GMS2) 그대희의 하나 번째 게입니다 - KMU 알아봐요
    카테고리 없음 2020. 2. 5. 23:41

    하지메마시테! 칸교자요.2개의 기본 튜터리얼을 마쳤는데, 아직, 플레이어가 맵의 밖에 자신이 몹시지 않은 제조 법은 가르치지 않으셨습니다. 플레이어를 맵 안에서만 돌아다니도록 하는 것은 기본 중의 기본 아닌가?게다가 튜터리얼의 첫번째 영상에서는 아래의 화상처럼 적 인스턴스가 수 없는 시간에 폭발하는 애니메이션을 보이고 달라는 이 스토리이다! 아니, 결과의 예로 보여준 걸 튜토리얼 이 스토리에서 뺐다고? 이 스토리도 안 돼.


    >


    GMS2가 정말 잘 만들어진 프로그램이라는 것은 압니다. 근데 튜토리얼은 성의가 없어요! 옆에 유니티는 튜토리얼까지 완벽한데. 초보자의 접근성을 높이기 위해 튜토리얼을 만들고 있는 것 같습니다. 그만큼 어려운 프로그램이라는 뜻도 있지만 ​ 때나 저는 GMS2가 감정에 드는데. 제일 걱정되는 게 두 가지가 있어요. *GMS2의 개발 회사이 폭삭 망해 버린다. *유니티의 2D게임 개발 환경이 GMS2보다 훨씬 발전한다.​ 절대 유니티 2D환경이 도태되었으면 좋겠다는 우이미이 없이 GMS2가 2D에 특화된 프로그램인 만큼 2D게임 분야에서 가장 뛰어난 엔진이 되기를 바랍니다. 계속 이 프로그램을 사용하고 싶거든요.삼천포에 빠졌어요.아무튼 요즘 내가 해야할 일은.. '적 인스턴스 파괴 어린이 애니메이션 만들기', '플레이어의 이동을 제한하는 경계 만들기' 입니다. 이걸 제일 먼저 할게요.아, 그리고 이번 포스트는 저처럼 튜토리얼의 부족한 부분을 채우고 싶은 분들에게도 도움이 되었으면 좋겠네요.&​​​


    >


    Mathf의 Clamp 함수는 최소값과 최대값 사이에 주어진 값을 고정시켜 줍니다 라고 "Space Shooter" 튜토리얼 영상으로 설명해 줍니다.응? 왜 갑자기 유니티 튜토리얼을 보냐고요? 예전에 유니티를 다루려고 요즘처럼 튜토리얼을 보면서 학습했는데 확실히 그때 Mathf. Clamp를 써서 플레이어 위치를 고정하는 경계(Boundary)를 만들었던 게 생각나서요. 확실히 유니티튜토리얼이 유용하긴 해요.​


    >


    물론 Mathf 특성 함수는 GML에서도 지원합니다. 그러고 보니 GMS2는 '#include' 없는 도기 본적으로 math헤도파하을 가지고 있어요. 최적화 면에서는 괜찮은가? 목소리, 이건 하다보면 알겠죠. . ​ 자, 그래서 그 Clamp함수를 이용하여 GMS2에서도 플레이어의 위치의 경계를 만들어 봅니다!​ ​ ​


    >


    보아하니 타일 하본이나 플레이어 오브젝트의 크기와 거의 같다. 그럼 이것을 기준으로 소의 의견을 볼게요.​​​


    >


    타일 일의 픽셀의 크기는 한 28이다니다. 그럼 두번째의 타일의 중간 부분은 일 28+(일 28/2)=일 92이다니이다.그럼 위의 이미지에서 우측 상단에 위치한 타일의 좌표의 x쥬와표은(x축이 왼쪽이라)인 92로 y쥬와표은(y축이 제일 위의 분이므로)768(세로 전체의 길이)과 일본의 92=576 해겟움니다.그래서 플레이어는 x:일 92에서 왼쪽으로, y:576에서 아래쪽으로 이동하지 못할 필요가 있습니다.​


    >


    마찬가지로 오른쪽 위( 볼 소지에서 왼쪽 아래)에 위치한 타일의 x쥬와표은 2048(가로 모두 길이)-192=1856으로 y쥬와표은 192여자네요.​ 결론적으로 플레이어를 192

    >


    플레이어 오브젝트에 코드를 추가하였습니다. 그러면 플레이어가 경계 밖으로 지나치지 못할 것이다.​​


    >


    왜? 왜? 왜 자신하는거야?


    >


    그야 함수만 쓰고 정작 좌표에는 적용하지 않기 때문이겠지.이 글은 실시간으로 만들면서 작성하고 있습니다.


    >


    >


    아, 나쁘지 않아요, 플레이어가 저 위치에서 밖에 자신은 없을 거에요! 그런데 저 벽까지는 움직여도 괜찮으니까 경계 범위를 좀 넓혀 봅시다.​​


    >


    자세히 보시면 격자문이 있습니다. 저 벽은 창살 하나 나쁘지 않은 반쯤부터 보이기 시작할거야.타고 1아래 나쁘지 않아 길이가 하나 92에서 창살 아래 나쁘지 않아 길이는 하나 92/4=48그래서 48/2=24입니다.플레이어는 타고 1아래 나쁘지 않은 정도의 크아프솜으로 상하 좌우로 경계를 24씩 언제나 그랬던 것처럼, 우라라면 됩니다.이렇게자세하게설명하는것은독자분들을의식해서그런것같습니다. 제가설명을잘하는사람이되고싶은욕심이있어서그런가봐요.​​


    >


    최소의 범위에서 24만큼 제치고 최대 범위에서 24만큼 더하면서 경계를 조금씩 벌리고 줍니다.​​


    >


    완벽하다! 벽에 막혀서 플레이어가 밖에 나갈 수 없게 되어 보이네요! 튜토리얼에서 알려주지 않은 것을 직접 만들어서 기뻐요. 적 인스턴스 파괴 애니메이션을 만들어야 한다.​​


    >


    사실 튜토리얼로 제공했지만 사용하지 않은 칼리지가 있어요. 특히 적 객체를 선도합니다.과인중에 앞서 새로운 연출을 만들어 보는 것도 재밌을 것 같아요. 쿠쿠쿠


    >


    >


    >


    완성 예를 다시 한 번 살펴보겠습니다. 'spr_enemy_fragment 1~6'키윈지로 파괴의 애니메이션을 만들었죠.관찰을 했으니 어떤 것을 고려해야 할지 생각해 봅시다.1. 파괴의 애니메이션을 재생하는 오브젝트 인스턴스의 발생 수 2. 각 인스턴스의 애니메이션 재생 속도 3. 해산하는 방향, 산화 속도 ​ 꼭 영상 군에 의해서 만들어질 필요는 없죠. 기위의 총알연사속도도 최대로 했어요! 그래서 저는 위의 조건을 적절히 조절해서 대폭발을 연출할 겁니다.​​


    >


    >


    이 오브젝트의 인스턴스를 Room에서 암데과인을 추가하고 우측 상단의 재생 버튼을 클릭하면 파괴 애니메이션이 재생되는 것을 볼 수 있습니다.​


    >


    >


    >


    Animation End 이벤트는 Other 카테고리에서 찾을 수 있습니다. 이렇게 하면 파괴 애니메이션이 끝났을 때 인스턴스를 없앨 수 있습니다. GMS2에서는 애니메이션 loop 할지를 다르게 제어하는 기능은 없는 것 같군요.​​


    >


    조금 전에 obj_enemy를 선택하고 instance_create_layer()를 이용하여 자가치유를 파괴할 때 obj_fragments를 발발하도록 코드를 작성합니다. 이미 전에 해봤는데 아시겠어요?여러분은 반복문에서 코드를 반복하면 멀어져요. 나는 무식하니까 10회 코피ー칠로 붙였어요.만약 프로그래밍을 시작한지 얼마 되지 않았다면, 일단 저처럼 무지한 비결을 사용해도 문제 없습니다! 하나하나 배워가는 겁니다. :)​​​


    >


    >


    완성되었습니다! 최근적인 인스턴스가 점점 더 터집니다! 요즘 더욱 볼만하군요.. 결국 스스로 부족한 부분을 채웠어요. 이렇게 만들면서 배운 게 있죠?이번 자리는 강좌처럼 쓰게 된 거예요. 기이 예상했듯이 GMS2튜토리얼을 보고 아쉬운 부분을 채우고 싶은 분에게 도움이 되었으면 좋겠다는 뜻에서 작성한 것 같아요.​​​


    >


    아직 사용하지 않은 튜토리얼이 준비한 소스들이 많아요! 여러분도 원하는 대로 게이지를 수정하고, 추가해서 변형해보세요. 분명히 그러면서 많이 배울 겁니다. 개발이 본인의 기획면에서 요령을 찾을 수도 있겠네요.아직 공부할 것이 많군요. 다음에는 무엇을 해볼까요? &ps. 아까 생각났는데 그 수많은 총알인스턴스를 화면 밖에서 처리하는 방법은 왜 안 알려줬나?


    댓글

Designed by Tistory.