이번 포스팅은 아이템 획득에 관하여 포스팅을 진행해 보겠습니다.
포스팅은 유니티 2D 게임 개발(게임 개발 프로그래밍)에 나온 예제로 진행합니다.
#1 유니티2D 개발 시작하기
안녕하세요 첫 포스팅입니다. 유니티2D 관련 포스팅을 진행하겠습니다. 게임개발에 필요한 지식을 전달하고 함께 학습하겠습니다. 먼저 유니티2D 개발 블로그 포스팅에 앞서 참고한 책을 소개합
my-develop-note.tistory.com
아이템 획득에 필요한 사전지식(애니메이션, 콜라이더, 레이어)은 아래의 링크를 참고하시면 좋겠습니다.
#12 유니티 기초 종합, 클래스 구현
#11 유니티 관련 포스팅까지 유니티에 관련하여 여러 지식들을 다루었습니다. 이제부터는 그 지식들을 응용, 조합을 하겠습니다. 포스팅은 유니티 2D 게임 개발(게임 개발 프로그래밍)에 나온 예
my-develop-note.tistory.com
동전 아이템을 만들도록 하겠습니다.

예제로 준비된 아이템 스프라이트를 준비하였습니다.
그 중에 동전으로 사용할 스프라이트를 Coin-spin이라는 이름으로 애니메이션으로 만들었습니다.

Assets > Animations > Controllers 폴더에 Coin-spin 애니메이션을 사용할 CoinController 애니메이터를 생성하였습니다.

1. Hierarchy창에서 CoinObject 이름으로 새로운 게임오브젝트를 생성하였습니다.
2. Inspector창에서 Animator , Spirte Renderer , Circle Collider 2D 컴포넌트를 추가합니다.
Animator 컴포넌트 > Controller 속성에 위에서 만든 CoinController를 추가합니다.
Spirte Renderer 컴포넌트 > Sprite 속성에 동전모양의 스프라이트를 추가합니다.

Circle Collider 2D 컴포넌트 > Is Trigger 체크 , Radius(반지름) 0.17로 설정
Circle Collider 2D는 원 모양의 콜라이더 입니다.
Is Trigger를 체크하여 플레이어오브젝트가 통과 할 수 있도록 설정합니다.
Radious를 0.17로 스프라이트의 크기와 비슷하게 설정하였습니다.
CoinObject에 태그와 레이어를 설정해보겠습니다.

1. Tags & Layers에서 Tags > CanBePickedUp 추가합니다.
2. Layers > Enemies , Conumables 추가합니다.
예제 RPG게임에서는 Enemy(적) 캐릭터는 동전을 주울 수 없도록 하기 위하여 레이어를 나누어 설정할 것입니다.
Enemy(적)에 적용할 Enemies 레이어를 추가하였습니다.

CoinObject의 Inspector에서 Tag > CanBePickedUp , Layer > Consumables 를 설정합니다.
Tag를 통하여 오브젝트가 주울수 있는 오브젝트인지 확인합니다.
Layer를 설정하여 Layer-Based Collision Detection(레이어 기반 충돌 감지)라는 유니티 기능을 사용할 것입니다.
Enemies 레이어와 Consumables 레이어가 상호작용할 수 없게 만들겠습니다.

1. Edit > Project Settings > Physics 2D 창을 생성합니다.
2. Physics 2D 창 아래에서 Consumables 레이어와 Enemies 레이어의 교차점 위치의 박스를 체크해제 합니다.
두 레어어가 충돌할때 상호작용할 수 없게 만들었습니다.
EnemyObject 프리팹을 클릭합니다.

EnemyObject 프리팹의 Layer를 Enemies로 설정합니다.
Player(플레이어)가 CoinObject와 충돌하였을 때 CoinObject가 사라지게 만들겠습니다.
Player 스크립트(C#)를 수정하겠습니다.
Player 스크립트(C#)의 전체 코드입니다.
using UnityEngine;
public class Player : Character
{
private void OnTriggerEnter2D(Collider2D collision)
{
if (collision.gameObject.CompareTag("CanBePickedUp"))
{
collision.gameObject.SetActive(false);
}
}
}
void OntriggerEnter 2D(Collider2D collision) 메서드는 플레이어의 콜라이더가 동전이 써클 콜라이더에 닿으면 자동으로 불리게 됩니다. 이 메서드를 사용하여 두 오브젝트가 충돌하였을 때 동작을 만들 수 있습니다.
조건문을 사용하여 플레이가 충돌한 게임오브젝트가 CanBePickedUp 태그인지 확인합니다.
조건이 참 이라면 해당 오브젝트 즉 CoinObject를 SetAcitve(false)하여 씬에서 사라지게 만듭니다.
Player 스크립트(C#)를 확인하고 저장합니다.
재생 버튼을 눌러 게임을 실행하고 플레이어가 CoinObject와 충돌 할때 CoinObject가 사라지는 것을 볼 수 있습니다.
마지막으로 Ctrl + S를 눌러 Scene을 저장합니다!
감사합니다! :)
'유니티2D' 카테고리의 다른 글
| #13-3 유니티 아이템 (OnTriggerEnter2D) (0) | 2020.12.12 |
|---|---|
| #13-2 유니티 아이템 Scriptable Object(스크립터블 오브젝트) (0) | 2020.12.11 |
| #12 유니티 기초 종합, 클래스 구현 (0) | 2020.12.08 |
| #11-3 유니티 시네머신 안정화, 마무리 작업 (0) | 2020.12.06 |
| #11-2 유니티 시네머신(Cinemachine) 제한자 (2) | 2020.12.05 |