جمع العملات المعدنية ثنائية الأبعاد في Unity

أصبح التقاط العملات وجمعها عنصرًا أساسيًا في الألعاب ثنائية الأبعاد، خاصة في 2D Platformers.

لالتقاط عملة معدنية في Unity، سنحتاج إلى إنشاء برنامج نصي سيتم إرفاقه بكائن coin وسيتم تدميره بمجرد اتصال اللاعب به، تحديث قيمة العداد.

Sharp Coder مشغل فديوهات

سأستخدم 2D Character Controller، ولكن يمكنك تخطي هذا الجزء إذا كان لديك بالفعل وحدة تحكم ثنائية الأبعاد.

خطوات

لإنشاء عملة ثنائية الأبعاد يمكن التقاطها وجمعها، اتبع الخطوات التالية:

  • قم بإنشاء GameObject جديد (GameObject -> إنشاء فارغ) وقم بتسميته "Coin"
  • قم بإرفاق مكون SpriteRenderer بالكائن "Coin"
  • قم بتعيين كائن العملة الخاص بك إلى SpriteRenderer (يمكنك استخدام الصورة أدناه، وتأكد من ضبط نوع المادة في إعدادات الاستيراد على 'Sprite (2D and UI)')

عملة ذهبية صورة شفافة

  • قم بقياس كائن العملة حتى الحجم المطلوب
  • قم بتغيير موضع محور العملة '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 وتكرارها حول المستوى.

لإنشاء عداد للعملات المعدنية، اتبع الخطوات التالية:

  • أنشئ صورة جديدة لواجهة المستخدم من خلال النقر بزر الماوس الأيمن على عرض التسلسل الهرمي -> واجهة المستخدم -> الصورة وتسميتها "CoinIcon"
  • قم بتعيين كائن العملة لمكون الصورة
  • قم بتغيير محاذاة RectTransform إلى 'top left'، والمحور إلى (0، 1)، والنشر X إلى '5'، وPos Y إلى '-5'، والعرض والارتفاع إلى '25'

  • أنشئ نصًا جديدًا بالنقر بزر الماوس الأيمن على عرض التسلسل الهرمي -> واجهة المستخدم -> النص وتسميته "CoinCounter"
  • قم بتعيين "CoinCounter" RectTransform مثل "CoinIcon"، باستثناء تعيين Pos X على '35' والعرض إلى '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"

اضغط على "تشغيل" ولاحظ أن العملات المعدنية تختفي عند اتصال اللاعب ويتم إضافتها إلى العداد.

المقالات المقترحة
برنامج تعليمي لهجوم المشاجرة ثنائي الأبعاد من أجل الوحدة
أعلى أصول الوحدة من متجر الأصول
كيفية استخدام نظام المياه HDRP الجديد في الوحدة
صانع الطقس - رفع بيئات الوحدة إلى آفاق جديدة
كيفية استخدام وحدة تحكم Xbox في الوحدة
البرنامج النصي لإنشاء مفتاح الضوء في الوحدة
كيفية إعداد جهاز التحكم بعصا التحكم للحركة في الوحدة