이번 포스팅은 아이템 획득에 관하여 포스팅을 진행해 보겠습니다.
포스팅은 유니티 2D 게임 개발(게임 개발 프로그래밍)에 나온 예제로 진행합니다.
아이템 획득에 필요한 사전지식(애니메이션, 콜라이더, 레이어)은 아래의 링크를 참고하시면 좋겠습니다.
동전 아이템을 만들도록 하겠습니다.
예제로 준비된 아이템 스프라이트를 준비하였습니다.
그 중에 동전으로 사용할 스프라이트를 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 |