Unity의 2D 코인 수집
동전 따기 및 수집은 2D 게임, 특히 2D 플랫폼 게임의 필수 요소가 되었습니다.
Unity에서 동전을 집으려면 coin 개체에 연결되고 플레이어가 해당 개체와 접촉하면 파괴되는 스크립트를 만들어야 합니다. 카운터 값을 업데이트합니다.
![]()
저는 2D 캐릭터 컨트롤러를 사용할 예정이지만, 이미 2D 컨트롤러가 있다면 이 부분을 건너뛰셔도 됩니다.
단계
줍고 수집할 수 있는 2D 코인을 만들려면 다음 단계를 따르세요.
- 새 GameObject를 생성하고(GameObject -> Create Blank) 이름을 지정합니다. "Coin"
- SpriteRenderer 구성요소를 "Coin" 객체에 연결
- 동전 스프라이트를 SpriteRenderer에 할당합니다(아래 이미지를 사용할 수 있습니다. 가져오기 설정의 텍스처 유형이 'Sprite (2D and UI)'로 설정되어 있는지 확인하세요).

- 원하는 크기가 될 때까지 Coin 개체의 크기를 조정합니다.
- 플레이어의 위치와 일치하도록 Coin 'Z' 축 위치를 변경합니다.
- BoxCollider2D 구성요소를 "Coin" 개체에 연결
- 새 스크립트를 만들고 이름을 "SC_2DCoin"로 지정하고 모든 내용을 제거한 다음 그 안에 아래 코드를 붙여넣습니다.
SC_2DCoin.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class SC_2DCoin : MonoBehaviour
{
//Keep track of total picked coins (Since the value is static, it can be accessed at "SC_2DCoin.totalCoins" from any script)
public static int totalCoins = 0;
void Awake()
{
//Make Collider2D as trigger
GetComponent<Collider2D>().isTrigger = true;
}
void OnTriggerEnter2D(Collider2D c2d)
{
//Destroy the coin if Object tagged Player comes in contact with it
if (c2d.CompareTag("Player"))
{
//Add coin to counter
totalCoins++;
//Test: Print total number of coins
Debug.Log("You currently have " + SC_2DCoin.totalCoins + " Coins.");
//Destroy coin
Destroy(gameObject);
}
}
}- SC_2DCoin 스크립트를 "Coin" 개체에 연결
- 플레이어 개체를 선택하고 해당 태그가 "Player"로 설정되어 있는지 확인하세요(동전을 집는 데 필요함).

이제 코인이 준비되었습니다. Prefab에 저장하고 레벨 주위에 복제할 수 있습니다.
동전 카운터를 만들려면 다음 단계를 따르세요.
- 계층 보기 -> UI -> 이미지를 마우스 오른쪽 버튼으로 클릭하고 이름을 지정하여 새 UI 이미지를 만듭니다. "CoinIcon"
- 이미지 구성 요소에 동전 스프라이트 할당
- RectTransform 정렬을 'top left'으로, 피벗을 (0, 1)로, Post X를 '5'로, Pos Y를 '-5'로, 너비와 높이를 다음으로 변경합니다. '25'

- 계층 보기 -> UI -> 텍스트를 마우스 오른쪽 버튼으로 클릭하고 이름을 지정하여 새 텍스트를 만듭니다. "CoinCounter"
- "CoinCounter" RectTransform을 "CoinIcon"와 동일하게 설정합니다. 단, Pos X를 '35'로 설정하고 Width를 다음으로 설정합니다. '160'
- 텍스트 글꼴 스타일을 'Bold'로, 글꼴 크기를 22로, 정렬을 'left center'로, 색상을 'white'

- 새 스크립트를 만들고 이름을 "SC_CoinCounter"로 지정하고 모든 내용을 제거한 다음 그 안에 아래 코드를 붙여넣습니다.
동전 카운터 스크립트는 동전 수를 텍스트 요소에 적용합니다.
SC_CoinCounter.cs
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public class SC_CoinCounter : MonoBehaviour
{
Text counterText;
// Start is called before the first frame update
void Start()
{
counterText = GetComponent<Text>();
}
// Update is called once per frame
void Update()
{
//Set the current number of coins to display
if(counterText.text != SC_2DCoin.totalCoins.ToString())
{
counterText.text = SC_2DCoin.totalCoins.ToString();
}
}
}- SC_CoinCounter 스크립트를 "CoinCounter" 텍스트 개체에 연결합니다.
플레이를 누르고 플레이어와 접촉하면 동전이 사라지고 카운터에 추가되는 것을 관찰하세요.