2023. 8. 8. 03:58ㆍC# & Unity 공부
이번에는 쯔꾸르 게임을 만들기 위한 기초를 배워 보겠다.
일단 시작하기에 앞서 다음 에셋 팩을 다운 받자
https://assetstore.unity.com/packages/2d/characters/top-down-2d-rpg-assets-pack-188718
Top-Down 2D RPG Assets Pack | 2D 캐릭터 | Unity Asset Store
Elevate your workflow with the Top-Down 2D RPG Assets Pack asset from Goldmetal. Find this & more 캐릭터 on the Unity Asset Store.
assetstore.unity.com
플러그인 설치
맵 만드는 법 심화과정을 배워볼 것이다.
저번에는 타일 맵을 썼는데, 다른 방법을 쓸 것이다.
Rule Tile : 규칙을 정할 수 있는 타일
Rule Tile이라는 기능은 기본적으로 제공하지 않아서 따로 설치를 해야 한다.
https://github.com/Unity-Technologies/2d-extras/releases
Releases · Unity-Technologies/2d-extras
Fun 2D Stuff that we'd like to share! Contribute to Unity-Technologies/2d-extras development by creating an account on GitHub.
github.com
여기에 들어가서 Unity 버전에 맞는 것을 다운 받자.
앞축을 풀고 Assets에다가 풀어주면 생길 것이다.
하지만, 유니티 최신 버전은 플러그인을 설치하지 않아도 된다.
이후 밑에서 Rule Tile을 한번 만들어 보자.
룰 타일
Assets 우클릭 > Create > 2D > Tiles > Rule Tile을 통하여 만들어 보자.
이름은 Grass로 해주었다.
인공지능적으로 Sprite 모양을 잡아주는 것을 할 것이다.
우선 기본 스프라이트를 지정해주고, Tile Rules에서 + 버튼을 통해 룰 타일을 추가해준다.
총 9개를 만들어주었다. (윗쪽, 중간, 아래 각각 3개)
그리고 위 사진처럼 각 방향 스프라이트를 끌어 넣는다.
다음에는 Tile Pallete 창에다가 만든 룰 타일을 끌어넣는다.
그리고 타일이 들어갈 위치에 맞게,
다음과 같이 화살표와 x를 넣어주자.
(클릭으로 변경 가능)
그리고 Hierarchy 창에 Tilemap을 만들고 직사각형으로 맵을 막 만들면, 알아서 잘 만들어진다.
타일마다 규칙이 있고 내가 정해주기 때문에 룰 타일이라고 한다.
요약하자면, 룰 타일을 이용하면 손쉽게 맵을 그릴 수 있다는 것이다!!
위와 같은 방법으로 Water 룰 타일도 만들어 보자.
다음 단계로 넘어가기 전에 아래 사진과 같이 만들어주자.
Hierarchy 창을 보면 Back Up 타일맵과 Back Down 타일맵이 보일 것이다.
Back Up : 초원 위를 덮는 모래 타일
Back Down : 초원, 바다 타일
이렇게 두 가지를 만들어 주었다.
타일맵 두 개 이상 작업할 땐 Focus On 기능이 유용하다.
원하는 타일맵 오브젝트를 클릭한 다음, 위 사진의 빨간 부분을 클릭해 TileMap으로 설정을 해두면
다음과 같이 원하는 타일맵만 확인할 수 있다.
애니메이션 타일
가끔 게임을 보면 살랑살랑 거리는 식물 같은 움직이는 것들이 보인다.
만드는 방법은 어렵지 않다.
똑같이 룰 타일을 만들고, Out Put에다가 Animation을 선택한 뒤 나오는 것들에
원하는 스타일이 나오게 설정을 해주면 된다.
순서는 아래 사진과 같다
그러면 흔들리는 식물 (현재 만드는 프로젝트에선)을 만들 수 있다.
다음으로 넘어가기 전에 아래 사진과 같이 만들어보자
Back Down : 초원, 바다 타일
Back Up: 초원 위를 덮는 모래 타일
Block Object: 플레이어 이동을 막는 타일 (나무, 집)
NonBlock Object: 플레이어 이동을 막지 않는 타일 (풀, 꽃)
외부 경계
플레이어가 맵 바꾸로 나가면 안 되기 때문에 방지하기 위한 외부 경계를 만들어보겠다.
우선 새로운 타일맵 오브젝트를 만들어보자. (이름은 BorderLine으로)
그리고 Add Component로 Composite Collider 2D (복합적 콜라이더로 Rigidbody 2D도 갖고 있다)와
Tilemap Collider 2D를넣어주자.
Rigidbody2D에서는 Body type을 Static으로 바꾸고
Tilemap Collider2D에서 Used by Composite으로 눌러 복합적 콜라이더로 모양을 위임하도록 하자.
마지막으로 경계를 원하는 타일로 그려주고, 보이지 않기 위해
Tilemap Renderer로 가서 Visible Inside Mask를 체크해주자.
이렇게 다했는데도 콜라이더가 안 보이는 버그가 생긴다면,
Composite Collider 2D의 Geometry Type을 한 번 바꿨다가 돌아와보자. (버그일 가능성 있음)
다음은 플레이어를 만들자.
과정은 생략하나 Rigid Body와 Collider을 넣고 Freeze Rotation Z와 Gravity Scale을 0으로 바꿀 것을 강조한다.
(애니메이션은 나중에 만들 것)
아래는 Player의 움직임 코드이다.
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class PlayerMove : MonoBehaviour
{
float h;
float v;
Rigidbody2D rigid;
void Awake()
{
rigid=GetComponent<Rigidbody2D>();
}
void Update()
{
h = Input.GetAxisRaw("Horizontal");
v = Input.GetAxisRaw("Vertical");
}
void FixedUpdate()
{
rigid.velocity = new Vector2(h * 2, v * 2);
}
}
아래와 같이 잘 실행되는 것을 확인할 수 있다.
픽셀 퍼펙트
현재 글을 쓰고 있는 내 기준에선 안 나타나지만,
가끔 실행시키면 검은 줄이 있는 경우가 있다.
픽셀이 카메라랑 충돌이 일어나서 생기는 문제다.
해결방법은 정말 쉽다.
카메라 오브젝트를 클릭하고, Add Component를 하여 Pixel Perfect Camera를 넣어주면 된다.
그리고 Assets pixel for Unit을 현재 픽셀 크기와 맞춰주면 된다.
'C# & Unity 공부' 카테고리의 다른 글
Unity 2D RPG - 3. 대화창 UI 구축하기 (0) | 2023.08.11 |
---|---|
Unity 2D RPG - 2. 쯔꾸르식 액션 구현하기 (0) | 2023.08.10 |
Unity 2D - 8. 스테이지를 넘나드는 게임 완성하기 (0) | 2023.08.05 |
Unity 2D - 7. 플레이어 피격 이벤트 구현하기 (0) | 2023.07.31 |
Unity 2D - 6. 몬스터 Ai 구현하기 (0) | 2023.07.31 |