Unity'de 2D Para Toplama

Bozuk para toplama ve toplama, 2D oyunlarda, özellikle de 2D Platformer'te temel bir unsur haline geldi.

Unity'te bir jeton almak için bir coin nesnesine eklenecek ve oyuncu onunla temasa geçtiğinde yok edilecek bir komut dosyası oluşturmamız gerekecek, sayaç değerinin güncellenmesi.

Sharp Coder Video oynatıcı

2D Karakter Denetleyicisini kullanacağım, ancak zaten bir 2D denetleyiciniz varsa bu kısmı atlayabilirsiniz.

Adımlar

Alınıp toplanabilecek bir 2 boyutlu para yapmak için aşağıdaki adımları izleyin:

  • Yeni bir GameObject oluşturun (GameObject -> Boş Oluştur) ve adlandırın "Coin"
  • "Coin" nesnesine bir SpriteRenderer bileşeni ekleyin
  • Coin sprite'ınızı SpriteRenderer'a atayın (aşağıdaki görseli kullanabilirsiniz, İçe Aktarma Ayarlarında Doku Tipinin 'Sprite (2D and UI)' olarak ayarlandığından emin olun)

Altın Para Şeffaf Görüntü

  • Coin nesnesini istenilen boyuta gelinceye kadar ölçeklendirin
  • Coin 'Z' eksen konumunu oyuncunun konumuyla eşleşecek şekilde değiştirin
  • "Coin" nesnesine bir BoxCollider2D bileşeni ekleyin
  • yeni bir komut dosyası oluşturun, onu "SC_2DCoin" olarak adlandırın, içindeki her şeyi kaldırın ve aşağıdaki kodu içine yapıştırın:

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 betiğini "Coin" nesnesine ekleyin
  • Oynatıcı nesnenizi seçin ve etiketinin "Player" olarak ayarlandığından emin olun (bu, parayı alabilmek için gereklidir)

Para artık hazır, onu Prefab'e kaydedebilir ve seviye boyunca çoğaltabilirsiniz.

Bozuk para sayma makinesi oluşturmak için aşağıdaki adımları izleyin:

  • Hiyerarşi görünümü -> Kullanıcı Arayüzü -> Görüntü'ye sağ tıklayarak yeni bir UI Görüntüsü oluşturun ve onu adlandırın "CoinIcon"
  • Görüntü bileşenine jeton karakteri atayın
  • RectTransform Hizalamasını 'top left' olarak, Pivot'u (0, 1) olarak, Post X'i '5' olarak, Poz Y'yi '-5' olarak, Genişlik ve Yüksekliği şu şekilde değiştirin: '25'

  • Hiyerarşi görünümü -> Kullanıcı Arayüzü -> Metin'e sağ tıklayarak yeni Metin oluşturun ve adlandırın "CoinCounter"
  • "CoinCounter" RectTransform'ı "CoinIcon" ile aynı şekilde ayarlayın, ancak Poz X'i '35' ve Genişlik'i şu şekilde ayarlayın: '160'
  • Metin Yazı Tipi Stilini 'Bold' olarak, Yazı Tipi Boyutunu 22 olarak, Hizalamayı 'left center' olarak ve Rengi de olarak ayarlayın. 'white'

  • Yeni bir komut dosyası oluşturun, onu "SC_CoinCounter" olarak adlandırın, içindeki her şeyi kaldırın ve ardından aşağıdaki kodu içine yapıştırın:

Madeni para sayacı komut dosyası, jeton sayısını Metin öğesine uygulayacaktır.

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 komut dosyasını "CoinCounter" Metin nesnesine ekleyin

Oynat'a basın ve paraların oyuncuya temas ettiğinde kaybolduğunu ve bir sayaca eklendiğini gözlemleyin.

Önerilen Makaleler
Zone Controller Pro - Unity Varlık Mağazası Paketi
Unity'de Yeni HDRP Su Sistemi Nasıl Kullanılır?
FPC Swimmer - Sürükleyici Su Ortamları için Kapsamlı Bir Birlik Varlığı
Ultimate Spawner 2.0 - Oyunun Kurallarını Değiştiren Bir Varlık
Unity için Fare Görünümü Komut Dosyası
Hava Durumu Oluşturucu - Birlik Ortamlarını Yeni Yüksekliklere Yükseltmek
Unity'de Xbox Denetleyicisi Nasıl Kullanılır