💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.0.78f1 به 6000.3.19f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame
🔸 ارتقا از نسخه 6000.0.78f1 به 6000.3.19f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame
👍2
در Godot اگر برای AI دنبال کردن پلیر و حرکت روی زمینهای پیچیده میخواهی، کلاس NavigationAgent3D توی Godot 4 خیلی کمک میکند 🚀
این سیستم روی NavigationServer3D سوار است و مشکل pathfinding روی meshهای پیچیده، رمپ، پله و… را حل میکند، بدون اینکه خودت الگوریتم A* پیادهسازی کنی.
چند نکته جذاب:
• استفاده از navmesh اتوماتیک یا دستی
• جلوگیری از گیر کردن AI به دیوارها و لبهها
• پشتیبانی از avoidance ساده برای برخورد نکردن Agentها به هم
• کارکرد مستقیم در Inspector، بدون boilerplate زیاد
نمونهکد ساده برای دنبالکردن پلیر:
مستندات رسمی Godot 4 در مورد Navigation و NavigationAgent3D:
Navigation Docs
امتحانش کن روی یک صحنه ساده دشمن/پلیر؛ خیلی سریع یک AI قابل قبول برای پروتوتایپ میگیری 😎
🔖 #GameDev #بازیسازی #Godot #Navigation #AI #GameDev #Pathfinding #Godot4 #NavigationAgent3D
👤 Developix
💎 Channel: @DevelopixGame
این سیستم روی NavigationServer3D سوار است و مشکل pathfinding روی meshهای پیچیده، رمپ، پله و… را حل میکند، بدون اینکه خودت الگوریتم A* پیادهسازی کنی.
چند نکته جذاب:
• استفاده از navmesh اتوماتیک یا دستی
• جلوگیری از گیر کردن AI به دیوارها و لبهها
• پشتیبانی از avoidance ساده برای برخورد نکردن Agentها به هم
• کارکرد مستقیم در Inspector، بدون boilerplate زیاد
نمونهکد ساده برای دنبالکردن پلیر:
extends CharacterBody3D
@onready var agent = $NavigationAgent3D
@onready var player = $"../Player"
func _physics_process(delta: float) -> void:
agent.target_position = player.global_transform.origin
var next_point = agent.get_next_path_position()
var dir = (next_point - global_transform.origin).normalized()
velocity = dir * 4.0
move_and_slide()
مستندات رسمی Godot 4 در مورد Navigation و NavigationAgent3D:
Navigation Docs
امتحانش کن روی یک صحنه ساده دشمن/پلیر؛ خیلی سریع یک AI قابل قبول برای پروتوتایپ میگیری 😎
🔖 #GameDev #بازیسازی #Godot #Navigation #AI #GameDev #Pathfinding #Godot4 #NavigationAgent3D
👤 Developix
💎 Channel: @DevelopixGame
❤3👍2
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.3.19f1 به 6000.0.79f1
🔹 لیست تغییرات این نسخه:
- بهروزرسانی Gradle به ۹.۱ و AGP به ۹.۰
- رفع مشکل نسخهکد اشتباه در split APKهای اندروید
- آپدیت بستههای خدمات آنلاین Unity (Cloud Code، Economy، Leaderboards و …)
- بهبود مستندات و رفتار استریم مِیپمپها در گرافیک
- بهروزرسانی Netcode و ابزارهای چندنفره برای پایداری بهتر
- سایر رفع باگها و بهبودهای جزئی و غیره
🔖 #unity, #game, #release
💎 @DevelopixGame
🔸 ارتقا از نسخه 6000.3.19f1 به 6000.0.79f1
🔹 لیست تغییرات این نسخه:
- بهروزرسانی Gradle به ۹.۱ و AGP به ۹.۰
- رفع مشکل نسخهکد اشتباه در split APKهای اندروید
- آپدیت بستههای خدمات آنلاین Unity (Cloud Code، Economy، Leaderboards و …)
- بهبود مستندات و رفتار استریم مِیپمپها در گرافیک
- بهروزرسانی Netcode و ابزارهای چندنفره برای پایداری بهتر
- سایر رفع باگها و بهبودهای جزئی و غیره
🔖 #unity, #game, #release
💎 @DevelopixGame
👍2
💠 نسخه جدید نرمافزار بلندر (Blender) منتشر شده است
🔸 ارتقا از نسخه 5.1.2 به 5.2.0
🔖 #blender, #game, #release
💎 @DevelopixGame
🔸 ارتقا از نسخه 5.1.2 به 5.2.0
🔖 #blender, #game, #release
💎 @DevelopixGame
👍2
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.0.79f1 به 6000.3.20f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame
🔸 ارتقا از نسخه 6000.0.79f1 به 6000.3.20f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame
در کد زیر حرکت کاراکتر بر اساس frame rate محاسبه شده و نه بر اساس delta time، که میتواند روی سیستمهای مختلف باعث تفاوت سرعت حرکت شود.
سؤال:
چه تغییری باید در منطق بهروزرسانی سرعت/موقعیت داده شود تا سرعت حرکت کاراکتر مستقل از تعداد فریم و فقط وابسته به زمان واقعی (delta time) باشد؟
🔖 #GameDev #بازیسازی
👤 Developix
💎 Channel: @DevelopixGame
سؤال:
چه تغییری باید در منطق بهروزرسانی سرعت/موقعیت داده شود تا سرعت حرکت کاراکتر مستقل از تعداد فریم و فقط وابسته به زمان واقعی (delta time) باشد؟
public class PlayerController : MonoBehaviour
{
public float speed = 5f;
private Vector3 direction;
void Update()
{
float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
direction = new Vector3(horizontal, 0f, vertical);
// Anti Pattern: وابسته به frame rate
transform.position += direction * speed;
}
}
🔖 #GameDev #بازیسازی
👤 Developix
💎 Channel: @DevelopixGame
👍2
Forwarded from Developix Support
با Migration Boost هاستایران، برای مهاجرت به سرور ابری دوباره هزینه ترافیک نده! 🚀
با خرید اولین سرور ابری غیرساعتی از **هاستایران**، بسته ترافیک هدیه مهاجرت بهصورت خودکار برای سرویس شما فعال میشود:
✅ حداقل ۱۰۰ گیگابایت ترافیک هدیه مهاجرت
✅ افزایش حجم هدیه متناسب با ظرفیت دیسک اولیه
✅ ترافیک آپلود رایگان
✅ بدون محدودیت زمانی
سرور ابری هاستایران را راهاندازی کنید و بکاپها، فایلها و پایگاه داده خود را بدون دغدغه هزینههای پنهان ترافیک منتقل کنید.
👇 مشاهده پلنهای سرور ابری هاستایران
hostiran.club/Migration
hostiran.club/Migration
با خرید اولین سرور ابری غیرساعتی از **هاستایران**، بسته ترافیک هدیه مهاجرت بهصورت خودکار برای سرویس شما فعال میشود:
✅ حداقل ۱۰۰ گیگابایت ترافیک هدیه مهاجرت
✅ افزایش حجم هدیه متناسب با ظرفیت دیسک اولیه
✅ ترافیک آپلود رایگان
✅ بدون محدودیت زمانی
سرور ابری هاستایران را راهاندازی کنید و بکاپها، فایلها و پایگاه داده خود را بدون دغدغه هزینههای پنهان ترافیک منتقل کنید.
👇 مشاهده پلنهای سرور ابری هاستایران
hostiran.club/Migration
hostiran.club/Migration
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.0.80f1 به 6000.3.21f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame
🔸 ارتقا از نسخه 6000.0.80f1 به 6000.3.21f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame
👍1
در کد زیر (C# برای Unity) یک سیستم ساده رویداد برای وقتی که دشمن میمیرد پیادهسازی شده است، اما در طول اجرای طولانی بازی باعث Memory Leak و افت عملکرد میشود:
در این پیادهسازی چه چیزی باید اصلاح شود تا از Memory Leak و فراخوانیهای ناخواسته رویداد در طول بازی جلوگیری شود؟
🔖 #GameDev #بازیسازی
👤 Developix
💎 Channel: @DevelopixGame
public class Enemy : MonoBehaviour
{
public static event Action OnAnyEnemyDied;
private void OnEnable()
{
OnAnyEnemyDied += HandleAnyEnemyDied;
}
private void OnDisable()
{
// عمداً خالی گذاشته شده
}
private void OnDestroy()
{
if (OnAnyEnemyDied != null)
{
OnAnyEnemyDied();
}
}
private void HandleAnyEnemyDied()
{
Debug.Log("Enemy heard another enemy died");
}
}
در این پیادهسازی چه چیزی باید اصلاح شود تا از Memory Leak و فراخوانیهای ناخواسته رویداد در طول بازی جلوگیری شود؟
🔖 #GameDev #بازیسازی
👤 Developix
💎 Channel: @DevelopixGame
❤1👍1
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.3.21f1 به 6000.0.81f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame
🔸 ارتقا از نسخه 6000.3.21f1 به 6000.0.81f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame
👍2👎1
💠 نسخه جدید انجین یونیتی (Unity) منتشر شده است
🔸 ارتقا از نسخه 6000.0.81f1 به 6000.3.22f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame
🔸 ارتقا از نسخه 6000.0.81f1 به 6000.3.22f1
🔹 لیست تغییرات این نسخه:
🔖 #unity, #game, #release
💎 @DevelopixGame
کتابخانهی Cinemachine در موتور Unity عملاً تبدیل شده به استاندارد دوربینهای هوشمند در بازیها؛ بدون اینکه لازم باشد برای هر حرکت دوربین کلی کُد سفارشی بنویسی. 🎮📷
مشکل چی را حل میکند؟
دوربین تعقیب کاراکتر، کاتسین سینمایی، لرزش هنگام شلیک، تمرکز روی چند هدف… همهاش با کلی Camera Controller دستنویس درنمیآید. Cinemachine یک سیستم کامپوننتمحور میدهد که این رفتارها را ترکیب کنی.
ویژگیهای مهم:
• Virtual Camera برای هر نما (تعقیب، ثابت، اوربیت و…)
• سیستم Priority و Blend برای کات و ترنزیشن نرم بین دوربینها
• تنظیم خودکار Framing روی کاراکتر/هدفها
• نویز و Shake آماده برای شلیک، انفجار، ضربه
نمونه استفاده ساده در C#:
برای شروع، پکیج را از Package Manager اضافه کن و چند Virtual Camera بساز؛ فقط با تغییر Priority میتوانی بین نماها کات سینمایی بگیری. 🎬
مستندات رسمی:
Docs
GitHub
امتحانش روی پروژهی بعدی ارزشش را دارد؛ مخصوصاً اگر همیشه درگیر اسکریپت دوربین هستی. 😉
🔖 #GameDev #بازیسازی #Unity #Cinemachine #Camera #GameDev #یونیتی #دوربین #Gameplay
👤 Developix
💎 Channel: @DevelopixGame
مشکل چی را حل میکند؟
دوربین تعقیب کاراکتر، کاتسین سینمایی، لرزش هنگام شلیک، تمرکز روی چند هدف… همهاش با کلی Camera Controller دستنویس درنمیآید. Cinemachine یک سیستم کامپوننتمحور میدهد که این رفتارها را ترکیب کنی.
ویژگیهای مهم:
• Virtual Camera برای هر نما (تعقیب، ثابت، اوربیت و…)
• سیستم Priority و Blend برای کات و ترنزیشن نرم بین دوربینها
• تنظیم خودکار Framing روی کاراکتر/هدفها
• نویز و Shake آماده برای شلیک، انفجار، ضربه
نمونه استفاده ساده در C#:
// فرض: روی یک Virtual Camera کامپوننت CinemachineVirtualCamera داریم
using Cinemachine;
using UnityEngine;
public class FollowPlayer : MonoBehaviour
{
public Transform player;
void Start()
{
var vcam = GetComponent<CinemachineVirtualCamera>();
vcam.Follow = player;
vcam.LookAt = player;
}
}
برای شروع، پکیج را از Package Manager اضافه کن و چند Virtual Camera بساز؛ فقط با تغییر Priority میتوانی بین نماها کات سینمایی بگیری. 🎬
مستندات رسمی:
Docs
GitHub
امتحانش روی پروژهی بعدی ارزشش را دارد؛ مخصوصاً اگر همیشه درگیر اسکریپت دوربین هستی. 😉
🔖 #GameDev #بازیسازی #Unity #Cinemachine #Camera #GameDev #یونیتی #دوربین #Gameplay
👤 Developix
💎 Channel: @DevelopixGame
👍5
🔥 پروژه: LÖVE 2D فریمورک دوبعدی لوا
برای پروتوتایپ سریع بازی دوبعدی با Lua، فریمورک LÖVE خیلی جمعوجور و خوشدست است 🎮
رندر 2D، ورودی، صدا، physics مبتنیبر Box2D و مدیریت پنجره را یکجا میدهد و روی ویندوز، لینوکس، macOS و حتی موبایل قابل اجراست. برای Game Jam، نمونهسازی مکانیک، یا آموزش مفاهیم پایه گیملوپ عالی جواب میدهد.
سورس و داک کاملش اینجاست:
github.com/love2d/love
⭐️ 8,648 ستاره
🔖 #GameDev #بازیسازی #توسعهدهندگان_بازی #گیم_دولوپمنت #فریمورک_بازی_دوبعدی
💎 @DevelopixGame
برای پروتوتایپ سریع بازی دوبعدی با Lua، فریمورک LÖVE خیلی جمعوجور و خوشدست است 🎮
رندر 2D، ورودی، صدا، physics مبتنیبر Box2D و مدیریت پنجره را یکجا میدهد و روی ویندوز، لینوکس، macOS و حتی موبایل قابل اجراست. برای Game Jam، نمونهسازی مکانیک، یا آموزش مفاهیم پایه گیملوپ عالی جواب میدهد.
سورس و داک کاملش اینجاست:
github.com/love2d/love
⭐️ 8,648 ستاره
🔖 #GameDev #بازیسازی #توسعهدهندگان_بازی #گیم_دولوپمنت #فریمورک_بازی_دوبعدی
💎 @DevelopixGame
❤1👍1
این کد کنترل شلیک تو بازی رو ببین، یه چیزی تو مدیریت Coroutineها و رویدادها بوی Memory Leak میده 👀
مشکل این کجاست و تو یه پروژه واقعی چطور درستش میکنی؟ (فقط منطق رو بگو، لازم نیست حتما همون ساختار کلاس رو نگه داری)
🔖 #GameDev #بازیسازی
👤 Developix
💎 Channel: @DevelopixGame
مشکل این کجاست و تو یه پروژه واقعی چطور درستش میکنی؟ (فقط منطق رو بگو، لازم نیست حتما همون ساختار کلاس رو نگه داری)
🔖 #GameDev #بازیسازی
👤 Developix
💎 Channel: @DevelopixGame
👍4
الگوی Observer توی بازیسازی یکی از بهترین راهها برای جدا کردن سیستمها از هم و جلوگیری از وابستگیهای درهمبرهمه 🔁
بهجای اینکه هر اسکریپت مستقیم بره سراغ بقیه، فقط به یک «رویداد» گوش میدهد. این رویکرد توی پروژههای متوسط و بزرگ یونیتی، دیباگ و تغییر گیمپلی رو خیلی راحتتر میکند.
مسئلهٔ رایج:
مثلاً وقتی بازیکن سکه میگیرد:
- اسکور باید زیاد شود
- صدا پخش شود
- یوآی آپدیت شود
اگر اسکریپت سکه مستقیماً سه کلاس مختلف را صدا بزند، هر تغییر کوچکی مساوی است با ویرایش چند جای متفاوت در کد 😵💫
با الگوی Observer فقط یک رویداد فراخوانی میشود و بقیه سیستمها خودشـان «مشترک» آن رویداد هستند.
نمونهٔ ساده در یونیتی (C#)
فرستندهٔ رویداد (مثلاً روی Coin):
دریافتکنندهها (Observerها):
همین الگو را میتوان برای سیستم یوآی، افکت صوتی یا حتی آنالیتیکس هم استفاده کرد، بدون اینکه اسکریپت Coin دربارهٔ آنها چیزی بداند 🎯
چند نکتهٔ عملی:
- توی صحنههای بزرگ، بهجای Singleton ساده، از ScriptableObject Event یا سیستم Event Bus تمیزتر استفاده میشود (ارجاع: "Game Programming Patterns" و داکیومنت یونیتی دربارهٔ ScriptableObject).
- حتماً در
برای مطالعهٔ بیشتر:
Game Programming Patterns - Observer
Unity Learn
از پروژهٔ بعدی، سیستم رویداد گیمپلی را جدا طراحی کن؛ معماری بازی تمیزتر و قابلگسترشتر میشود 🚀
🔖 #GameDev #بازیسازی #Observer #Unity #CSharp #GameArchitecture #Events #CleanCode
👤 Developix
💎 Channel: @DevelopixGame
بهجای اینکه هر اسکریپت مستقیم بره سراغ بقیه، فقط به یک «رویداد» گوش میدهد. این رویکرد توی پروژههای متوسط و بزرگ یونیتی، دیباگ و تغییر گیمپلی رو خیلی راحتتر میکند.
مسئلهٔ رایج:
مثلاً وقتی بازیکن سکه میگیرد:
- اسکور باید زیاد شود
- صدا پخش شود
- یوآی آپدیت شود
اگر اسکریپت سکه مستقیماً سه کلاس مختلف را صدا بزند، هر تغییر کوچکی مساوی است با ویرایش چند جای متفاوت در کد 😵💫
با الگوی Observer فقط یک رویداد فراخوانی میشود و بقیه سیستمها خودشـان «مشترک» آن رویداد هستند.
نمونهٔ ساده در یونیتی (C#)
using UnityEngine;
using System;
public class GameEvents : MonoBehaviour
{
public static GameEvents Instance;
public event Action<int> OnCoinCollected;
void Awake()
{
Instance = this;
}
public void CoinCollected(int amount)
{
OnCoinCollected?.Invoke(amount);
}
}
فرستندهٔ رویداد (مثلاً روی Coin):
public class Coin : MonoBehaviour
{
public int amount = 1;
void OnTriggerEnter(Collider other)
{
GameEvents.Instance.CoinCollected(amount);
Destroy(gameObject);
}
}
دریافتکنندهها (Observerها):
public class ScoreSystem : MonoBehaviour
{
int score;
void OnEnable()
{
GameEvents.Instance.OnCoinCollected += HandleCoin;
}
void OnDisable()
{
GameEvents.Instance.OnCoinCollected -= HandleCoin;
}
void HandleCoin(int amount)
{
score += amount;
}
}
همین الگو را میتوان برای سیستم یوآی، افکت صوتی یا حتی آنالیتیکس هم استفاده کرد، بدون اینکه اسکریپت Coin دربارهٔ آنها چیزی بداند 🎯
چند نکتهٔ عملی:
- توی صحنههای بزرگ، بهجای Singleton ساده، از ScriptableObject Event یا سیستم Event Bus تمیزتر استفاده میشود (ارجاع: "Game Programming Patterns" و داکیومنت یونیتی دربارهٔ ScriptableObject).
- حتماً در
OnDisable از رویدادها لغو عضویت شود تا Memory Leak یا خطای Null Reference در سوییچ صحنه پیش نیاید.برای مطالعهٔ بیشتر:
Game Programming Patterns - Observer
Unity Learn
از پروژهٔ بعدی، سیستم رویداد گیمپلی را جدا طراحی کن؛ معماری بازی تمیزتر و قابلگسترشتر میشود 🚀
🔖 #GameDev #بازیسازی #Observer #Unity #CSharp #GameArchitecture #Events #CleanCode
👤 Developix
💎 Channel: @DevelopixGame
❤2👍1
🔥 پروژه: اُپنایج؛ موتور بازمتن Age of Empires II
اگر روی RTS کار میکنی یا همیشه میخواستی بدانـی Age of Empires II زیر کاپوت چطور کار میکند، پروژهٔ openage خیلی بهدرد میخورد 🎮
این یک موتور بازمتن است که منطق AoE2 را بازپیادهسازی میکند؛ کراسپلتفرم، دادهمحور و مناسب بررسی طراحی سیستمهای واحدها، pathfinding و بالانس.
برای الهام گرفتن از معماری، ساخت prototype RTS یا تمرین Modding گزینهٔ جذابی است. سورس و مستنداتش اینجاست:
github.com/SFTtech/openage
⭐️ 14,437 ستاره
🔖 #GameDev #بازیسازی #توسعهدهندگان_بازی #Game_Development #موتور_بازی
💎 @DevelopixGame
اگر روی RTS کار میکنی یا همیشه میخواستی بدانـی Age of Empires II زیر کاپوت چطور کار میکند، پروژهٔ openage خیلی بهدرد میخورد 🎮
این یک موتور بازمتن است که منطق AoE2 را بازپیادهسازی میکند؛ کراسپلتفرم، دادهمحور و مناسب بررسی طراحی سیستمهای واحدها، pathfinding و بالانس.
برای الهام گرفتن از معماری، ساخت prototype RTS یا تمرین Modding گزینهٔ جذابی است. سورس و مستنداتش اینجاست:
github.com/SFTtech/openage
⭐️ 14,437 ستاره
🔖 #GameDev #بازیسازی #توسعهدهندگان_بازی #Game_Development #موتور_بازی
💎 @DevelopixGame
🔥4
پروژه: موتور بازی سازی توت فرنگی (موتور بازیسازی دو بعدی و چندسکویی بر پایه داتنت)
موتور بازی سازی توت فرنگی یک موتور نگاشته شده در زبان C# مبتنی بر پلتفرم dotnet است که امکان ساخت بازی های دو بعدی را در با استفاده از سیستم اجزاء (Component System) می دهد
نسخه اولیه این موتور جهت تست و رفع اشکال در قالب یک فریمورک برنامه نویسی منتشر شده و فاقد ادیتور می باشد
شما می توانید با استفاده از این نسخه اولی در زبان سی شارپ بازی های خود را بسازید، این نسخه کاملا متن باز می باشد
سایت موتور:
sb-engine.ir
لینک سورس روی گیت هاب:
https://github.com/koosha72/strawberry
لینک سورس روی گیت محلی:
git.sb-engine.ir
لینک پکیج منیجر محلی:
nuget.sb-engine.ir
@strawberry_engine
🔖 #GameDev #بازیسازی
👤 کوشا
💎 Channel: @DevelopixGame
موتور بازی سازی توت فرنگی یک موتور نگاشته شده در زبان C# مبتنی بر پلتفرم dotnet است که امکان ساخت بازی های دو بعدی را در با استفاده از سیستم اجزاء (Component System) می دهد
نسخه اولیه این موتور جهت تست و رفع اشکال در قالب یک فریمورک برنامه نویسی منتشر شده و فاقد ادیتور می باشد
شما می توانید با استفاده از این نسخه اولی در زبان سی شارپ بازی های خود را بسازید، این نسخه کاملا متن باز می باشد
سایت موتور:
sb-engine.ir
لینک سورس روی گیت هاب:
https://github.com/koosha72/strawberry
لینک سورس روی گیت محلی:
git.sb-engine.ir
لینک پکیج منیجر محلی:
nuget.sb-engine.ir
@strawberry_engine
🔖 #GameDev #بازیسازی
👤 کوشا
💎 Channel: @DevelopixGame
GitHub
GitHub - koosha72/strawberry: Strawberry game engine
Strawberry game engine. Contribute to koosha72/strawberry development by creating an account on GitHub.
❤4👍1
🎮 حرکت نرم، بدون زبالهٔ اضافه
اگر کاراکتر در هر فریم کمی مکث میکند، فقط سراغ فیزیک نرو؛ ساختن مداوم آبجکت هم میتواند باعث فعالیت بیشتر Garbage Collector شود. در یونیتی، حرکت ساده را میشود بدون تخصیص آرایه یا لیست تازه در هر فریم نوشت.
🛠 این نمونه جهت ورودی را میگیرد و حرکت را با زمان فریم هماهنگ میکند:
💡 اینجا
این الگو را روی حرکت ساده امتحان کن و هنگام بررسی افت فریم، بخش
📚 راهنمای رسمی یونیتی دربارهٔ تخصیص حافظه
🔖 #GameDev #بازیسازی #Unity #GC #Vector3 #GameDev
👤 Developix
💎 Channel: @DevelopixGame
اگر کاراکتر در هر فریم کمی مکث میکند، فقط سراغ فیزیک نرو؛ ساختن مداوم آبجکت هم میتواند باعث فعالیت بیشتر Garbage Collector شود. در یونیتی، حرکت ساده را میشود بدون تخصیص آرایه یا لیست تازه در هر فریم نوشت.
🛠 این نمونه جهت ورودی را میگیرد و حرکت را با زمان فریم هماهنگ میکند:
using UnityEngine;
public class SimpleMover : MonoBehaviour
{
[SerializeField] float speed = 5f;
void Update()
{
float x = Input.GetAxisRaw("Horizontal");
float z = Input.GetAxisRaw("Vertical");
Vector3 direction = new Vector3(x, 0f, z).normalized;
transform.position += direction * speed * Time.deltaTime;
}
}
💡 اینجا
Vector3 یک ساختار مقداری است؛ ساختنش بهتنهایی تخصیص حافظه روی heap ایجاد نمیکند. نرمالسازی هم نمیگذارد حرکت مورب از حرکت مستقیم سریعتر شود. اگر از Rigidbody استفاده میکنی، جابهجایی فیزیکی را با روش مناسب فیزیک انجام بده، نه با تغییر مستقیم transform.position.این الگو را روی حرکت ساده امتحان کن و هنگام بررسی افت فریم، بخش
GC Alloc را در Profiler هم ببین. 🔍📚 راهنمای رسمی یونیتی دربارهٔ تخصیص حافظه
🔖 #GameDev #بازیسازی #Unity #GC #Vector3 #GameDev
👤 Developix
💎 Channel: @DevelopixGame
❤2👍1