분류 전체보기
-
2D.MetalSlug 01. Intro 영상
이번엔 추억의 Metal Slug를 모티브 하여 제작해 보려고 합니다. Unity를 활용하여 만들 예정이며 Metal Slug의 영상들을 찾아보니, 1~6 까진 들어 봤는데 7과 xx의 난도가 높은 시리즈까지 나왔다고 하더군요.. 초등학생 때 어릴 적 문구점 앞에서 100원씩 넣고 재밌게 했던 기억이 있는데. 시간이 참 빠른 것 같습니다. 우선 메탈슬러그를 설명하자면, 어택 모션은 총 / 칼 / 수류탄뿐이 없지만, 이동을 하면서 인질을 구하거나 주변 오브젝트를 파괴하여 다양한 무기를 얻으며 스테이지를 클리어하는 게임입니다. 00:30초 제작에 앞 서 우선 인트로 영상을 구현해 보았습니다. 약 30초가량의 intro영상인데, 각 해당 Sprite들을 애니메이션으로 만들어 프리 팹으로 관리하였습니다. Gam..
-
2D 슈팅게임 05. Enemy Hit 및 아이템 드롭
오늘은 날아다니는 Enemy 들을 맞췄을 시 발생하는 Hit 모션과 아이템이 드롭되는 부분을 구현하고 게임을 완성 시키려고 합니다. 전과 같은 방법으로 Sprite를 애니메이션으로 만들어주어 Hit 모션을 만들어 줬습니다. 애니메이션을 만드는 과정에서 Has Exit Time 부분을 종종 깜빡하는 경우가 생기는데 Has Exit Time 를 체크해두면 전 애니메이션의 동작이 완료된 후에 트랜지션대로 전이가 됩니다. 반대로 Has Exit Time 를 언체크 해두시면 즉시 전이가 되기에 깜빡하지 않는 습관을 들인다면, 시간을 절약시킬 수 있습니다. Enemy의 Animator 입니다. 평상시는 대기상태로 나는 모션을 취하다가, 히트가 됐을 시 Hit모션 재생 후 다시 BirdRed의 대기 상태로 돌아옵니다..
-
2D 슈팅게임 04. Enemy 제작
Enemy로 사용될 Bird Sprite 들은 유니티 에셋 스토어에서 무료로 다운로드하였습니다. 이 새(Enemy) 들은 맵의 좌/우 한 방향으로 이동을 하며 1. 총 3종류로 각 스피드가 다릅니다. 2. Atk(공격 물체)에 맞으면 드롭되는 아이템들도 다릅니다. 3. 종류 : 코인 / 똥 / 버프 로 크게 3가지를 구성 계획으로 잡았습니다. 이제부턴 Monster/새/ 등을 Enemy로 칭하겠습니다. Enemy에게 RigidBody2 D 컴포넌트를 추가시켰습니다. 중력을 받으면 안 되기에 RigidBody2 D 영역에 있는 Gravity Scale은 0으로 바꿔 주었습니다. 스크립트에 들어가기에 앞서 애니메이션을 Idle로 칭해 만들어 주겠습니다. Enemy의 스크립트입니다. birdSpeed_를 pu..
-
2D 슈팅게임 03. 점프 및 공격 모션
오늘은 Player의 점프 및 Attack 모션을 진행해 보겠습니다. 이동 구현과 마찬가지로 Rigidbody를 이용해서 점프를 시각적으로 보여줄 예정입니다. 백문 불여일견. 바로 진행하겠습니다. Jump 스크립트 입니다. Rigdbody는 rb란 변수로 선언해 담아 왔고 Animator는 ani란 변수로 선언해 담아왔습니다. jump를 하는데 필요한 jumpSpeed (점프 스피드)와 2단 이상의 중복 점프를 막기 위해 점프 중인지 체 크할 불 변수 isJump를 선언하였습니다. 점프 구현을 생각하니 초기 점프 구현 부분에 상당히 애먹었던 적이 있습니다. 다행히 CollisionFlags 변수의 Below 이용해 if(cc.collisionFlags == CollisionFlags.Below)의 조건으..
-
2D 슈팅게임 02. 캐릭터 이동구현
타이틀 씬에서 게임 화면 씬으로 넘어가는 것처럼 보이는 효과를 SetActive를 활용해 UI를 비활성화시켜주며 완성을 시켰습니다. 지난 받아온 Sprite들을 이용하여 Player와 Monster를 만들고 Player의 이동구현은 현재 모바일 환경이기에 조이스틱으로 캐릭터를 움직일 예정입니다. 유니티 에셋 스토어에서 받아온 무료 캐릭터의 Idle 이미지를 가져왔습니다. 이후 중력을 적용시켜줄 수 있는 Rigidbody 2D (3D x)와 Collider 2D (3D x)를 입혀 생명을 불어넣어 주었고 바닥과 양 벽을 빈 오브젝트에 콜라이더를 추가시켜주어 캐릭터가 떨어지거나, 필요 이상의 x축으로 나가는 것을 막았습니다. Collider에 대해 찾아보던 도 중, 알게 된 사실인데 Sphere Collid..
-
2D 슈팅게임 01. 게임 디자인 및 준비단계
먼저 작업에 앞서 01 챕터에서는 게임에 필요한 단순 준비 단계를 보여주기에 동작 구현을 보실 분들은 2D 슈팅게임 02.부터 봐주신다면 방문하여 주신 귀하의 바쁜 시간에 조금이나마 보탬이 될 것 같습니다. 개인 프로젝트인 작은 2D 슈팅게임을 만들어 본 적이 있습니다. 이번 기회에 제 것으로 만들기 위해서 개발 과정을 하나씩 캡처를 하며 빠르진 않더라도 과정을 보여드리려고 합니다. 배경과 플레이어에 따라 제목이 달라질 것 같아서 게임의 제목은 아직 정하지 못했습니다. 우선 제가 만들고자 하는 게임의 간단한 소개는 이러합니다. 1.Player는 좌 우 이동이 가능하며 점프가 가능합니다. 2.Player가 공격 버튼을 클릭하여 몬스터를 맞출 시, 몬스터는 공격 물, 코인, 버프 아이템을 랜덤으로 낙하합니다..
-
팀업 프로젝트 03. Enemy 상태구현 및 넉백
수정된 맵 사진입니다. 마을과 Boss zone을 나누어 마을에서부터 일반 몬스터를 잡으며 아이템을 얻고 보스를 소탕하는 동작 구현으로 설계를 하였습니다. Terrain인 필드는 경로가 너무 길다고 판단하여 맵을 Teerain 컴포넌트를 이용해 수정하고 새로 배치를 해 주었습니다. Enemy의 상태인 Return, Damaged, Die 상태를 보겠습니다. Damaged와 Die 상태는 매 프레임마다 실행되는것이 아닌 조건이 성립할 때 한 번씩 실행되기에, Update문에서 함수 실행을 하지 않았습니다. 여기서도 거리를 체크 하기 위해 Vector3.Distance를 사용하였습니다. 거리를 체크하는 방법을 몇가지 더 찾아보니 Vector3 에는 1. Distance 2. magnitude 그리고 처음 보..
-
팀업 프로젝트 02. Enemy의 상태 구현 및 Time.deltaTime
주기적으로 Enemy의 상태를 체크하기 위한 Update 함수에서의 siwtch문입니다. 우선 Slider를 사용하려면 네임스페이스 using UnityEngine.UI를 선언해 주어야 합니다. Enemy의 체력을 나타내 주는 slider를 주기적으로 확인하기 위하여 Update 함수에서 Slider를 담은 변수 hp_bar의 value 값을 현재 hp / 최대 hp로 나누어 0.0f - 1.0f의 value 값을 만들게 하였습니다. Enemy의 Move함수입니다. 첫 번째 if문에서 Vector.Distance 함수를 사용하여 Enemy의 위치화 초기 위치의 거리가 최대 움직일 수 있는 moveDis보다 크다면, Return(복귀) 상태로 변경하게 해 주었고, else if문에서는 최대 움직일 수 있는..
-
팀업 프로젝트 01. 디자인과 상태구현
01. 팀업 프로젝트 디자인과 상태 구현 플레이어, 일반 몬스터, 보스 몬스터, 인벤토리 구현에서 일반 몬스터를 맡게 되었습니다. 앞으로 진행될 프로젝트들의 과정과 개인 프로젝트의 진행 과정을 블로그를 이용해 기록을 할 예정입니다. 일반 몬스터인 Enemy로 플레이어와 마을의 느낌에 어색하지 않게 반 실사적인 휴먼로이드의 캐릭터를 에셋에서 찾아 무료로 다운로드를 했습니다. [ Enemy의 상태 구현 ] Idle인 기본 상태, Move인 이동 상태, Attack인 공격 상태, Return인 복귀 상태, Damged인 대미지 받는 상태, Die인 죽음 상태로 총 Enemy의 상태는 6가지입니다. public EnemyState enemyState : 초기 상태 및 상태 값을 체크하기 위해 변수로 선언했습니다..