یونیتی چیست؟
یونیتی در سال ۲۰۰۵ توسط شرکت یونیتی تکنولوژی (Unity Technologies) معرفی شد و به سرعت تبدیل به یکی از محبوبترین ابزارهای توسعه بازیهای ویدیویی شد. این موتور بازیسازی، قابلیت تولید بازیهایی با کیفیت بالا را برای پلتفرمهای مختلف از جمله اندروید، iOS، ویندوز، مک، لینوکس، کنسولها و حتی وب فراهم میکند. یونیتی از زبانهای برنامهنویسی محبوبی مانند C# پشتیبانی میکند و این امکان را به توسعهدهندگان میدهد تا به سرعت برنامههای خود را توسعه دهند.
حرکت کاربر
حرکت دادن کاراکتر بازیکن یکی از ابتداییترین مفاهیمی است که در ساخت بازیها با آن مواجه خواهید شد. در اینجا یک کد ساده برای حرکت کاراکتر ارائه شده است:
using UnityEngine;
public class PlayerMovement : MonoBehaviour
{
public float speed = 5f;
void Update()
{
float moveX = Input.GetAxis("Horizontal");
float moveZ = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveX, 0f, moveZ) * speed * Time.deltaTime;
transform.Translate(movement);
}
}
توضیحات:
-
از متد
Update
برای دریافت ورودیها و حرکت دادن کاراکتر استفاده شده است. -
ورودیهای افقی و عمودی (کلیدهای جهتدار یا WASD) با استفاده از
Input.GetAxis
دریافت میشوند. -
سرعت حرکت با متغیر
speed
کنترل میشود.
پرش کاربر
برای افزودن قابلیت پرش، میتوانیم از یک کد ساده به همراه نیروی فیزیکی استفاده کنیم:
using UnityEngine;
public class PlayerJump : MonoBehaviour
{
public float jumpForce = 5f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void Update()
{
if (Input.GetKeyDown(KeyCode.Space))
{
rb.AddForce(Vector3.up * jumpForce, ForceMode.Impulse);
}
}
}
توضیحات:
-
این کد از یک
Rigidbody
برای اعمال نیروی پرش استفاده میکند. -
با فشردن کلید Space، نیرویی به سمت بالا به کاراکتر اعمال میشود.
متوقف کردن کاربر
گاهی اوقات نیاز دارید که حرکت کاربر را متوقف کنید. میتوانید این کار را با تنظیم سرعت حرکت به صفر انجام دهید:
using UnityEngine;
public class PlayerStop : MonoBehaviour
{
private bool isStopped = false;
public float speed = 5f;
void Update()
{
if (Input.GetKeyDown(KeyCode.S))
{
isStopped = !isStopped;
}
if (!isStopped)
{
float moveX = Input.GetAxis("Horizontal");
float moveZ = Input.GetAxis("Vertical");
Vector3 movement = new Vector3(moveX, 0f, moveZ) * speed * Time.deltaTime;
transform.Translate(movement);
}
}
}
توضیحات:
-
با فشردن کلید
S
، حرکت کاراکتر متوقف یا از سر گرفته میشود.
متوقف کردن بازی
در اینجا یک اسکریپت ساده ارائه میشود که با فشردن یک دکمه (مثل Escape
) بازی را متوقف یا از حالت توقف خارج میکند.
using UnityEngine;
public class PauseGame : MonoBehaviour
{
private bool isPaused = false;
void Update()
{
if (Input.GetKeyDown(KeyCode.Escape))
{
if (isPaused)
{
ResumeGame();
}
else
{
Pause();
}
}
}
public void Pause()
{
Time.timeScale = 0;
isPaused = true;
Debug.Log("Game Paused");
}
public void ResumeGame()
{
Time.timeScale = 1;
isPaused = false;
Debug.Log("Game Resumed");
}
}
مراحل استفاده:
- یک GameObject (مثلاً یک Empty GameObject) در صحنه ایجاد کنید.
- اسکریپت بالا را به آن اضافه کنید.
- اگر میخواهید یک منوی توقف نمایش داده شود، کد مربوط به نمایش یا مخفی کردن UI را در داخل متدهای
Pause
وResumeGame
اضافه کنید.
نکات:
- وقتی
Time.timeScale
برابر با0
است، تمام موارد وابسته به زمان (مانند انیمیشنها، فیزیک و ...) متوقف میشوند. - رویدادهای UI (مثل کلیک روی دکمهها) همچنان کار میکنند، زیرا به مقیاس زمان وابسته نیستند.
ایجاد یک شیء جدید
ایجاد یک شیء در صحنه میتواند به سادگی با استفاده از تابع Instantiate
انجام شود:
using UnityEngine;
public class SpawnObject : MonoBehaviour
{
public GameObject objectToSpawn;
public Transform spawnPoint;
void Update()
{
if (Input.GetKeyDown(KeyCode.E))
{
Instantiate(objectToSpawn, spawnPoint.position, spawnPoint.rotation);
}
}
}
توضیحات:
-
یک شیء به نام
objectToSpawn
در نقطهای مشخص (spawnPoint
) ایجاد میشود. -
با فشردن کلید
E
، شیء جدیدی در صحنه ظاهر میشود.
پخش صدا در یونیتی
مراحل:
- یک فایل صوتی (مانند
.mp3
یا.wav
) را به پروژه یونیتی اضافه کنید. - فایل صوتی را به یک GameObject متصل کنید و اطمینان حاصل کنید که کامپوننت
AudioSource
به آن اضافه شده است. - یک اسکریپت جدید ایجاد کنید و کد زیر را در آن قرار دهید.
using UnityEngine;
using UnityEngine.UI;
public class PlaySoundOnButtonClick : MonoBehaviour
{
public AudioSource audioSource;
public Button playButton;
void Start()
{
if (playButton != null)
{
playButton.onClick.AddListener(PlaySound);
}
}
void PlaySound()
{
if (audioSource != null)
{
audioSource.Play();
}
else
{
Debug.LogWarning("AudioSource is not assigned!");
}
}
}
توضیحات:
- AudioSource: اطمینان حاصل کنید که کامپوننت AudioSource دارای فایل صوتی تنظیم شده است.
- Button: یک دکمه در صحنه ایجاد کنید و آن را به
playButton
در اسکریپت متصل کنید. - PlaySound: وقتی دکمه کلیک شود، متد
PlaySound
اجرا شده و صدا پخش میشود.
نحوه استفاده:
- این اسکریپت را به یک GameObject مانند یک Empty GameObject یا دکمه متصل کنید.
- فایل صوتی و دکمه را در Inspector به اسکریپت متصل کنید.
- دکمه را در حالت Play فشار دهید تا صدا پخش شود.
نتیجهگیری
این موارد تنها بخش کوچکی از قابلیتهای یونیتی هستند. با استفاده از این کدها میتوانید پروژههای ابتدایی خود را آغاز کرده و دانش خود را در این زمینه گسترش دهید. برای یادگیری بیشتر، مستندات رسمی یونیتی و تمرینهای عملی میتوانند کمککننده باشند.
منبع : UNITYFARSI