Unity의 2D 코인 수집

동전 따기 및 수집은 2D 게임, 특히 2D 플랫폼 게임의 필수 요소가 되었습니다.

Unity에서 동전을 집으려면 coin 개체에 연결되고 플레이어가 해당 개체와 접촉하면 파괴되는 스크립트를 만들어야 합니다. 카운터 값을 업데이트합니다.

Sharp Coder 비디오 플레이어

저는 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);
        }
    }
}

이제 코인이 준비되었습니다. 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" 텍스트 개체에 연결합니다.

플레이를 누르고 플레이어와 접촉하면 동전이 사라지고 카운터에 추가되는 것을 관찰하세요.