خبر و ترفند روز

خبر و ترفند های روز را اینجا بخوانید!

نحوه طراحی و کدنویسی نوار سلامت در Unity3D

اگر بازی شما دارای مبارزات است، احتمالاً باید با سلامتی مقابله کنید. با Unity3D، می توانید این کار را به سبک انجام دهید.

سلامتی که در برخی از اولین بازی‌های ویدیویی جهان پیشگام بود، مکانیک رایجی است که در بسیاری از عناوین محبوب امروزی نیز وجود دارد. Health این امکان را به شما می‌دهد که از مکانیک‌های مبارزه پیچیده استفاده کنید، پیشرفت بازیکن را ایجاد کنید و بازی خود را بصری‌تر کنید. اما چگونه می توان یک سیستم سلامت را به بازی های خود اضافه کرد؟

Unity3D افزودن عناصر رابط کاربری دو بعدی به بازی های سه بعدی را آسان می کند، بنابراین مکانی عالی برای شروع کاوش نوارهای سلامت برای اولین بار است.

آنچه شما یاد خواهید گرفت

در ظاهر، این پروژه ممکن است پیچیده به نظر نرسد. با وجود این، شما باید چندین مفهوم کلیدی رمزگذاری Unity3D را برای ایجاد یک نوار سلامت کارآمیز درک کنید. این بدان معنی است که در حین انجام این پروژه چیزهای زیادی برای یادگیری وجود دارد، از جمله:

  • نحوه ایجاد عناصر و اسپریت های UI دو بعدی در Unity3D.
  • چگونه اجزای شی بازی را با کد ویرایش کنیم.
  • نحوه اشتراک گذاری متغیرها بین اسکریپت ها در Unity3D

مرحله 1: صحنه خود را تنظیم کنید

قبل از اینکه بتوانید کدگذاری نوار سلامتی خود را شروع کنید، به یک صحنه با یک مدل پخش کننده نیاز دارید تا بتوانید روی آن اعمال شود. برای شروع، می توانید راهنمای کنترل کننده کاراکتر Unity3D مبتنی بر فیزیک ما را دنبال کنید تا یک مدل پخش کننده با کنترل های اولیه ایجاد کنید.

با وجود یک صحنه و مدل پخش کننده، وقت آن است که یک عنصر رابط کاربری اضافه کنید. در داخل پنجره Hierarchy کلیک راست کرده و UI > Image را انتخاب کنید. این دو آیتم جدید در سلسله مراتب شما ایجاد می کند: یک شی والد Canvas و یک شی فرزند Image. نام شی فرزند را به Healthbar تغییر دهید. با استفاده از بازرس، عرض، ارتفاع و موقعیت را برای نوار سلامتی خود انتخاب کنید.

وحدت یک تصویر رابط کاربری اضافه کنید

می‌توانید یک تصویر رابط کاربری کمی بزرگ‌تر اضافه کنید که رنگ آن روی سیاه تنظیم شده است تا به عنوان پس‌زمینه/حاشیه نوار سلامت عمل کند. فقط مطمئن شوید که بالای نوار سلامت در سلسله مراتب باشد تا در پشت آن نمایش داده شود.

مطلب مرتبط:   برنامه نویسی ماژولار در یونیتی چیست و چرا مهم است؟

این عنصر رابط کاربری به‌عنوان پایه‌ای برای نوار سلامتی شما کار می‌کند، اما برای متحرک کردن آن به یک sprite نیز نیاز دارید. به پنجره Project بروید، کلیک راست کرده و Create > 2D > Sprites > Square را انتخاب کنید.

وحدت یک جن جدید اضافه کنید

Healthbar را از سلسله مراتب انتخاب کنید و اسپرایتی را که به تازگی ایجاد کرده اید به کادر انتخاب Source Image در داخل بازرس بکشید. همچنین می توانید نوع تصویر را به Filled، Fill Method را به Horizontal و Fill Origin را به Left تغییر دهید. حالا اگر بازی خود را اجرا کنید و از نوار لغزنده Fill Amount استفاده کنید، باید شاهد کوچک شدن و رشد نوار سلامتی خود باشید.

Sprite را به عنوان یک جزء شی اضافه کنید

اگر نمی‌توانید منوی مؤلفه رابط کاربری را ببینید، به Window > Package Manager بروید و مطمئن شوید که بسته دو بعدی را نصب کرده‌اید.

مرحله 2: یک متغیر سلامت اضافه کنید

ایجاد یک نوار سلامت بدون وجود متغیر سلامت برای تعیین وضعیت آن فایده ای ندارد. اسکریپت های دیگر باید بتوانند به این متغیر دسترسی داشته باشند، و منطقی است که آن را در جایی مرکزی قرار دهیم. آن را به عنوان یک شناور عمومی به اسکریپت کنترل کاراکتر اضافه کنید:

public float playerHealth = 1.0f;

استفاده از یک شناور برای این متغیر به این معنی است که شما به راحتی می توانید هر درصدی از 0 تا 100 را برای مطابقت با متغیر Fill Amount تصویر UI نوار سلامت نشان دهید. به عنوان مثال، بازیکن سلامت 0.5f 50٪ از عرض نوار سلامت است.

مرحله 3: به اشتراک گذاری متغیرها بین اسکریپت ها در Unity

متغیرها معمولاً در توابع و اسکریپت های خود عمل می کنند. این باعث می‌شود که آنها از سایر توابع و اسکریپت‌ها غیرقابل دسترسی باشند، مگر اینکه اقداماتی را انجام دهید تا به کد بگویید متغیرهایی را که می‌خواهید با آن‌ها کار کنید کجا پیدا شود.

با ایجاد یک فایل اسکریپت جدید به نام Health برای قرار دادن کد شروع کنید. می توانید این اسکریپت را روی عنصر Healthbar UI ایجاد شده در مرحله اول بکشید و رها کنید. کد زیر وارد تابع void Update() می شود.

مطلب مرتبط:   روابط پایگاه داده در جنگو را درک کنید

این فرآیند با یافتن شی بازی که صاحب متغیر است شروع می شود. در این مورد، شی Character_Model است:

GameObject Character_Model = GameObject.Find("Character_Model");

در مرحله بعد، زمان پیدا کردن مؤلفه اسکریپت است که حاوی متغیری است که باید با آن کار کنید.

Character_Control character_Control = Character_Model.GetComponent();

و در نهایت، می توانید متغیر خاصی را که به دنبال آن هستید استخراج کنید. در این مورد، این متغیر playerHealth است که به کنترلر کاراکتر خود اضافه کرده اید. این را به یک متغیر شناور در اسکریپت فعلی به نام currentHealth اختصاص دهید.

currentHealth = character_Control.playerHealth;

برای بدست آوردن متغیر مورد نیاز فقط چند خط کد لازم است و هر زمان که نیاز به دسترسی به سلامت بازیکن خود داشتید می توانید از این روش استفاده کنید. پس از اتمام کار کد شما باید به این شکل باشد:

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Health : MonoBehaviour
{
    public float currentHealth;

    void Start()
    {
    }

    void Update()
    {
        GameObject Character_Model = GameObject.Find("Character_Model");
        Character_Control character_Control = Character_Model.GetComponent();
        currentHealth = character_Control.playerHealth;
    }
}

مرحله 4: UI Health Bar Object بازی را برنامه ریزی کنید

اکنون که یک عنصر رابط کاربری نوار سلامت ایجاد کرده‌اید و به متغیر سلامت پخش‌کننده دسترسی دارید، وقت آن است که آنها را با هم کار کنید. برای شروع، یک متغیر استاتیک خصوصی اضافه کنید که حاوی مولفه تصویر نوار سلامت شما باشد:

private static Image Healthbar;

سپس می توانید جزء تصویر را در تابع void Start () به این متغیر اختصاص دهید که فقط یک بار اجرا می شود.

Healthbar = GetComponent();

اکنون که همه متغیرهای خود را در جای خود دارید، می توانید از کد مرحله قبل برای تنظیم عرض پر شدن شی UI نوار سلامت استفاده کنید. در اینجا نیازی به انجام هیچ تبدیلی ندارید. هر دو میزان سلامت بازیکن و میزان پر شدن نوار سلامت متغیرهای شناور هستند.

Healthbar.fillAmount = currentHealth;

با قرار دادن این کد، نوار سلامتی شما بر اساس متغیر سلامت موجود در کد Character_Control بالا و پایین پر می شود. اگرچه این کمی کسل کننده است و قطعاً می تواند با مقداری رنگ انجام شود.

با افزودن یک رنگ جدید شروع کنید تا وقتی بازیکن سلامت زیادی دارد نوار سلامتی را به رنگ سبز روشن درآورید.

Color greenHealth = new Color(0.6f, 1, 0.6f, 1);

در مرحله بعد، یک عبارت if اضافه کنید تا بررسی کنید که آیا سلامت بازیکن بالاتر از 0.3f است، یعنی 30٪ یا بیشتر. اگر بالاتر از 0.3f است، نوار سلامت را طوری تنظیم کنید که با رنگی که به تازگی اضافه کرده اید مطابقت داشته باشد. اگر زیر 0.3f است، نوار سلامت را قرمز کنید.

if (currentHealth >= 0.3f) {
    Healthbar.color = greenHealth;
} else {
    Healthbar.color = Color.red;
}

مرحله 5: تست کد

همانطور که از کد کامل زیر می بینید، این پروژه زمانی که همه با هم باشد بسیار ساده است. البته، با این حال، شما به راهی برای آزمایش کد خود نیاز دارید.

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;

public class Health : MonoBehaviour
{
    private static Image Healthbar;
    public float currentHealth;

    void Start()
    {
        Healthbar = GetComponent();
    }

    void Update()
    {
        GameObject Character_Model = GameObject.Find("Character_Model");
        Character_Control character_Control = Character_Model.GetComponent();
        currentHealth = character_Control.playerHealth;
        Healthbar.fillAmount = currentHealth;

        Color greenHealth = new Color(0.6f, 1, 0.6f, 1);

        if (currentHealth >= 0.3f) {
            Healthbar.color = greenHealth;
        } else {
           Healthbar.color = Color.red;
       }
    }
}

می توانید یک خط کد را به اسکریپت Character_Control اضافه کنید تا آزمایش را امکان پذیر کنید. هر زمان که بازیکن کلید W را برای حرکت به جلو فشار می دهد، مقدار کمی از سلامتی را بردارید. می توانید همان کد را به هر اسکریپتی با دسترسی به متغیر playerHealth برای نتایج یکسان اضافه کنید:

playerHealth -= 0.001f;

همچنین می توانید به پروژه Unity خود دارایی های منحصر به فرد اضافه کنید. می‌توانید دارایی‌های Unity رایگان را در سرتاسر وب بیابید و به شما این شانس را می‌دهد که پروژه خود را بدون نیاز به صرف هزینه زنده کنید.

مطلب مرتبط:   چرا نباید مدل پایه دک بخار شیر را بخرید؟

ساخت نوارهای سلامت در Unity3D

اکنون که نوار سلامتی برای شخصیت خود در نظر گرفته اید، بازی شما شروع به شکل گیری می کند. هنوز کارهای زیادی برای انجام دادن وجود دارد، اما اکنون باید برخی از مهارت های کلیدی را که برای شروع پیشرفت واقعی به آنها نیاز دارید، داشته باشید. البته، با این حال، خواندن راهنماهای بیشتر هرگز ضرری ندارد.