عنوان مقاله: حرکت کاراکتر در یونیتی با استفاده از اسکریپت C#

مقدمه:

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

مراحل ساخت حرکت کاراکتر در یونیتی:

  1. ایجاد پروژه در یونیتی:
    ابتدا یک پروژه جدید در یونیتی ایجاد کنید. سپس یک صحنه جدید (Scene) باز کنید.
  2. اضافه کردن کاراکتر به صحنه:
    برای این کار می‌توانید از یک مدل ساده مانند یک “Cube” استفاده کنید یا از مدل‌های سه‌بعدی آماده استفاده کنید. این مدل به عنوان نمایه کاراکتر شما عمل خواهد کرد.
  3. ایجاد اسکریپت C# برای حرکت کاراکتر:
    در این بخش یک اسکریپت C# به نام PlayerMovement ایجاد می‌کنیم که وظیفه حرکت کاراکتر را بر عهده خواهد داشت.

کد اسکریپت C# برای حرکت کاراکتر:

using UnityEngine;

public class PlayerMovement : MonoBehaviour
{
    public float moveSpeed = 5f; // سرعت حرکت
    public float rotationSpeed = 700f; // سرعت چرخش

    void Update()
    {
        // دریافت ورودی حرکت از صفحه کلید (W, A, S, D)
        float horizontal = Input.GetAxis("Horizontal"); // چپ و راست
        float vertical = Input.GetAxis("Vertical"); // بالا و پایین

        // حرکت کاراکتر در جهت جلو و عقب
        Vector3 move = transform.forward * vertical + transform.right * horizontal;
        transform.Translate(move * moveSpeed * Time.deltaTime, Space.World);

        // چرخش کاراکتر بر اساس ورودی افقی
        if (horizontal != 0 || vertical != 0)
        {
            Quaternion toRotation = Quaternion.LookRotation(move, Vector3.up);
            transform.rotation = Quaternion.RotateTowards(transform.rotation, toRotation, rotationSpeed * Time.deltaTime);
        }
    }
}

توضیح کد:

  1. تعریف متغیرها:
    • moveSpeed: سرعت حرکت کاراکتر.
    • rotationSpeed: سرعت چرخش کاراکتر به هنگام تغییر جهت.
  2. ورودی‌های کاربر:
    در متد Update()، ورودی‌های کاربر با استفاده از Input.GetAxis() دریافت می‌شود. این ورودی‌ها به کاراکتر اجازه می‌دهند که حرکت کند.
  3. حرکت کاراکتر:
    حرکت کاراکتر بر اساس ورودی‌های عمودی (Vertical برای W و S) و افقی (Horizontal برای A و D) انجام می‌شود. این حرکت از طریق متد Translate انجام می‌شود که به کاراکتر اجازه می‌دهد در فضای سه‌بعدی حرکت کند.
  4. چرخش کاراکتر:
    به منظور اینکه کاراکتر هنگام حرکت در جهت جدید بچرخد، از Quaternion.LookRotation و Quaternion.RotateTowards استفاده می‌کنیم.

نتیجه:

این اسکریپت ساده به کاراکتر شما اجازه می‌دهد که با استفاده از کلیدهای W, A, S, D در جهت‌های مختلف حرکت کند و همچنین به صورت نرم و صاف در هنگام تغییر جهت بچرخد.

اضافه کردن اسکریپت به کاراکتر:

برای اینکه این اسکریپت کار کند، کافی است آن را به شیء کاراکتر (مثلاً یک Cube) در صحنه یونیتی اضافه کنید. برای این کار:

  • اسکریپت را ایجاد کرده و سپس آن را به کاراکتر خود بکشید.
  • مقادیر moveSpeed و rotationSpeed را در Inspector تنظیم کنید.

نتیجه نهایی:

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