_Han_
나의 개발 노트
_Han_
  • 분류 전체보기 (273)
    • 데이터 엔지니어링 (30)
    • 인프라 (3)
    • 추천시스템 (11)
    • 코딩테스트 (146)
    • 부트캠프 회고 (15)
    • 회고 (4)
    • 자격증 (1)
    • 파이썬 프로그래밍 (6)
    • 통계 (2)
    • Git (21)
    • 유니티2D (33)

최근 글

반응형
hELLO · Designed By 정상우.
_Han_

나의 개발 노트

#13-1 유니티 아이템 줍기(써클 콜라이더)
유니티2D

#13-1 유니티 아이템 줍기(써클 콜라이더)

2020. 12. 10. 15:51
반응형

이번 포스팅은 아이템 획득에 관하여 포스팅을 진행해 보겠습니다.

 

포스팅은 유니티 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 속성에 동전모양의 스프라이트를 추가합니다.

hearts-and-coins32x32_4의 이미지

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
    '유니티2D' 카테고리의 다른 글
    • #13-3 유니티 아이템 (OnTriggerEnter2D)
    • #13-2 유니티 아이템 Scriptable Object(스크립터블 오브젝트)
    • #12 유니티 기초 종합, 클래스 구현
    • #11-3 유니티 시네머신 안정화, 마무리 작업
    _Han_
    _Han_
    학습한 것을 기록합니다.

    티스토리툴바