본문 바로가기

2D 플랫포머12

게임개발 중급(17) - 2D 플랫포머 게임 만들기(총정리) 2D 플랫포머 게임 만들기(총정리) 여태까지 저희는 2D 플랫포머 게임 만들기를 진행하였고, 그 과정에서 다양한 스크립트와 오브젝트 등 많은 것들이 사용되었습니다. 그리고 중간에 이미 만든 것을 변형하기도 하였습니다. 저희가 만약 게임을 만드는 개발자가 아니라 플레이하는 유저라면, 저희가 만든 게임을 보고 만들기 어렵다고 생각하지 않을 것입니다. 하지만 직접 해보면 생각보다 많은 것들이 필요하고 어렵다는 것을 알 수 있습니다. 오늘은 최종적으로 만들어진 결과물을 정리하는 내용으로 마무리 하겠습니다. 하이어라키 창과 프로젝트 창 오브젝트 폴더는 비어있습니다. 저는 유니티 내부에서 제공하는 기본 오브젝트를 하이어라키에 바로 생성하여 사용했기 때문입니다. 마찬가지로 Scenes 폴더에도 현재 사용하고 있는 S.. 2023. 5. 6.
게임개발 중급(16) - 2D 플랫포머 게임 만들기(11) 2D 플랫포머 게임 만들기(11) 저번에는 게임 자체를 멈출 수 있는 방법과, 추가로 ESC 키 입력을 통한 일시정지기능과 시각적 표현까지 구현 하였습니다. 이번에는 원래 하려고 계획했던 움직이는 장애물을 한번 만들어 보겠습니다. 움직이는 장애물 만들기 저는 기존에 만들어둔 장애물 프리팹에 새로운 스크립트를 추가하여 넣을 것이기 때문에, 프리팹을 하이어라키에 가져온 후, 새 스크립트를 적용한 새 프리팹을 만들도록 하겠습니다. MovingObstacle 으로 새로운 프리팹을 생성하였습니다. 이 프리팹에 적용하게 될 코드는 이것입니다. FixedMovingObstacle using UnityEngine; public class FixedMovingObstacle : MonoBehaviour { public .. 2023. 5. 6.
게임개발 중급(15) - 2D 플랫포머 게임 만들기(10) 2D 플랫포머 게임 만들기(10) 저번에는 장애물을 설치하고 플레이어가 닿으면 죽으며, 정해진 목숨을 전부 사용하면 게임오버가 되도록 게임을 설계해 보았습니다. 아직 게임 자체를 멈추진 못하지만, 플레이를 할 수 없는 상태로는 만들었습니다. 이번에는 게임 자체를 멈출 수 있는 방법에 대해 한번 알아보고, 고정된 위치에 있는 장애물이 아닌, 움직이는 장애물을 한번 만들어 보겠습니다. 게임 멈추기 게임의 진행을 멈추는 방법은 의외로 어렵지 않습니다. Time.timeScale 값을 변경하여 게임 시간을 조절할 수 있습니다. 이 방법은 게임을 느리게하거나 빠르게할 때 사용합니다. Time.timeScale 값을 0으로 설정하면 게임이 멈추고, 1보다 큰 값을 설정하면 게임이 빨라집니다. 그렇다면 life가 0.. 2023. 5. 5.
게임개발 중급(14) - 2D 플랫포머 게임 만들기(9) 2D 플랫포머 게임 만들기(9) 이전에는 오브젝트의 갯수를 제어하여 메모리사용과 시스템 과부하를 예방하는 방법에 대해 알아보았습니다. 이번에는 장애물을 설치해 플레이어가 닿으면 죽고, 정해진 목숨을 전부 사용하면 게임오버가 되도록 설계해 보겠습니다. 장애물 설치 직관적으로 장애물이라는 것을 보여주기 위해 삼각형 모양의 오브젝트를 사용하겠습니다. 하지만, 유니티 기본 2D 오브젝트에서 삼각형을 제공하지 않아 Isometric Diamond를 사용해서 삼각형 모양으로 보이게끔 대체 하겠습니다. 장애물의 기능을 하기 위해서는 기본적으로 코인과 같은 방식으로 동작해야 합니다. 하지만 다른점은 코인은 플레이어와 부딪혔을 때, 코인이 없어지면서 점수가 올라가지만, 장애물은 플레이어가 없어지면서 라이프가 깎여야 합니.. 2023. 5. 4.
게임개발 중급(13) - 2D 플랫포머 게임 만들기(8) 2D 플랫포머 게임 만들기(8) 이전에는 프리팹으로 생성한 오브젝트의 고정위치 생성 및 이동과 더불어 플레이어가 맵을 이탈하지 못하도록 경계를 설정해주는 작업을 하였습니다. 이번에는 프리팹으로 계속해서 생성되는 오브젝트를 플레이어가 먹지 않고 지나치게 되면 계속해서 쌓여 게임의 성능과 용량을 크게 차지하게 될 수 있으니 이를 방지하기 위한 작업을 하겠습니다. 오브젝트 삭제 저희가 사용하는 게임의 화면은 기본적으로 X축 -10 에서 10, Y축 -5 에서 5의 범위를 가지고 있습니다. 사실상 이 범위 바깥으로 나가면 보이지 않고, 게임에서 제외됩니다. 그렇지만, 오브젝트를 생성하고 삭제해주지 않는다면, 실제로 보이는 오브젝트는 몇개 되지 않아도 계속해서 보이지 않는 공간에 쌓여 메모리공간 및 성능의 영향을.. 2023. 5. 3.
게임개발 중급(12) - 2D 플랫포머 게임 만들기(7) 2D 플랫포머 게임 만들기(7) 지난 시간에는 만들어진 프리팹 Coin을 사용하여 정해진 바운더리 안에서 3초마다 랜덤하게 생성되도록 하는 제너레이터 스크립트를 작성해 보았습니다. 이번에는 좀 더 플랫포머 게임다운 방식으로 게임에 변화를 줄 것입니다. 코인이 랜덤위치에 생성되는 것이 아닌 정해진 위치에서 생성되고, 일정속도로 왼쪽방향으로 움직이도록 만들고, 플레이어가 맵을 이탈하지 않도록 경계를 설정해 줄 것입니다. CoinSpawner 변경 using System.Collections; using System.Collections.Generic; using UnityEngine; public class CoinSpawner : MonoBehaviour { public GameObject coinPref.. 2023. 5. 1.
게임개발 중급(11) - 2D 플랫포머 게임 만들기(6) 2D 플랫포머 만들기(6) 이전시간에는 프리팹에 대해 알아보았습니다. 이번엔 저번에 알게된 프리팹을 실제로 예제에 적용하여 3초마다 플레이어가 움직일 수 있는 공간에 랜덤하게 코인 오브젝트가 생성되도록 제너레이터 스크립트를 작성 하겠습니다. 프리팹 사용 저번에 프리팹을 만들었고, 이제는 사용을 해야 합니다. 우선 프리팹을 사용하려면 특정함수를 사용해야 합니다. 바로 Instantiate() 입니다. 이 함수는 프리팹을 게임에 생성하는 역할을 해줍니다. 하지만 함수를 사용하려면 해당 함수가 사용된 스크립트에 프리팹을 전달해주어야 합니다. 프리팹의 전달은 아주 간단합니다. 사진으로 설명하겠습니다. Step 1 우선 빈 오브젝트를 생성하고 Generator 라고 이름을 붙혀주었습니다. 이곳에 저희가 만든 스크.. 2023. 4. 30.
게임개발 중급(10) - 2D 플랫포머 게임 만들기(5), 프리팹(Prefab) 2D 플랫포머 게임 만들기(5), 프리팹(Prefab) 저번에 진행했던 코인을 먹으면 점수가 오르도록 하는 코드, 그리고 최적화에 이어서 진행하겠습니다. 코인으로 저희가 예제를 작성할 때, 콜라이더를 가진 코인 오브젝트를 여러개 만들었습니다. 예제에서는 4개정도 만드는 것에 그쳤지만, 실제로 저희가 게임을 만들다 보면 계속해서 사용되고, 등장하는 오브젝트들이 있습니다. 그 대표적인 예시가 바로 코인입니다. 근데 수많은 오브젝트를 일일이 만드는 것은 개발자 답지 않고, 쓸데없이 불편합니다. 그래서 유니티에서는 프리팹(Prefab)이라는 것을 사용합니다. 프리팹은 재사용 가능한 게임 오브젝트(Game Object)를 의미합니다. 프리팹은 게임 오브젝트와 그것이 가지고 있는 모든 컴포넌트들을 하나의 파일로 묶.. 2023. 4. 29.
게임개발 중급(9) - 2D 플랫포머 게임 만들기(4) 2D 플랫포머 게임 만들기(4) 이전 시간에 플레이어 움직임과 코인을 먹으면 점수가 올라가는 단계까지 진행하였습니다. 이번에는 스크립트 작성할 때, 최적화 혹은 더 간편하게 코드를 짜는 방법에 대해서 이야기 해보겠습니다. 사실 최적화 같은 기술은 한번 배운다고 하루아침에 잘하게 되는것은 아닙니다. 해당 코드와 게임의 구조를 생각하고, 어울리도록 만들 줄 아는 능력이 요구됩니다. 저도 게임 프로그래밍을 배우면서 작성하는 사람인지라 완벽하게 최적화하거나 간결한 코드를 만들 순 없습니다. 사람마다 코드를 짜는 방식도 다르고, 스타일도 다르기 때문에 항상 더 좋은 코드를 찾아서 나아가는 것이 최적화의 길입니다. 추후에 프로젝트가 커지는 것까지 고려한다면, 구조를 상당히 잘 짜야하지만, 일단 저는 간단한 예제로 .. 2023. 4. 28.
게임개발 중급(8) - 2D 플랫포머 게임 만들기(3) 2D 플랫포머 게임 만들기(3) 저번시간에는 바닥을 통해 좌우로 이동하고, 점프하는 플레이어를 만들어 보았습니다. 이번엔 아이템을 먹고 점수가 올라가도록 이어서 설계해보겠습니다. 먼저 아이템으로 사용할 오브젝트를 가져옵니다. 유니티 시스템에 있는 2D 오브젝트를 생성해서 사용해도 되지만, 유니티에는 수많은 무료 리소스를 사용할 수 있는 에셋스토어가 존재합니다. 저는 유니티 기본 UI를 사용하겠습니다. 우선 UI로 Text를 추가하고, 2D 오브젝트 Circle을 만들어 줍니다. UI는 추가하면 Scene 뷰에서는 엄청나게 큰 테두리가 생성됩니다. 그것과 별개로 게임뷰에서는, 왼쪽아래 구석에 Text 글자가 조그만하게 보일 것입니다. 저희는 점수로 사용할 것이기 때문에 화면 중앙에 위치하도록 옮겨주고, S.. 2023. 4. 27.