«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
از کار انداختن رگ دال در یونیتی :: گیم اور _ بازیسازی با unity + مطالب متفرقه

گیم اور _ بازیسازی با unity + مطالب متفرقه

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

آموزش های علمی با اجازه ی خدا تقدیم به هرکس خدا بخواد

به نام خدا
--
گروه قدیم ما promakers.ir یا پرومیکرز بود که بالای هزار اموزش توش ساخته بودم به اسم sajjad3011 ولی حیف ادمین سایتش عوض کرد
حالا سوالی بود کاری بود این شمارمه

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

---
سوالی بود بذارید
نظر خصوصی نذارید
پاسخش سخته
دوست داشتید شماره بذارید تو واتساپ یا ایتا یا .... گروه بزنیم.
09358077198

بایگانی
پیوندها

۱ مطلب با کلمه‌ی کلیدی «از کار انداختن رگ دال در یونیتی» ثبت شده است

gameover.blog.ir

رگ دال چیه ؟ رگ دال سیستمی هست بر حسب rigidbody که وقتی کاراکتر تیر می خوره یا مثلا از روی موتور می افته ولو میشه.(هر یک از پارت های فرزند گیم ابجکت در حقیقت کامپوننت rigidbody دارن که فیزیک افتادن به صورت فردی روی تمام فرزندها اجرا میشه)


برای غیرفعال کردن رگ دال یکی از راه ها این است که گزینه ی isKinematic را برای تمام ریجید بادی های فرزند فعال کنیم(نکته: برای فعال کردن هم می توانید آن را false کنید):

using UnityEngine; 
using System.Collections;

public class Ragdoll : MonoBehaviour 
{
void DisableRagdoll() {
 Rigidbody[] allRigidbodies = GetComponentsInChildren<Rigidbody>();
 foreach(Rigidbody r in allRigidbodies) { 
r.isKinematic = true;
}
}

void EnableRagdoll() { Rigidbody[] allRigidbodies = GetComponentsInChildren<Rigidbody>(); foreach(Rigidbody r in allRigidbodies) { r.isKinematic = false; }
}

public void OnDeath() {
EnableRagdoll();
}

}


نکته:

اگر بخواهیم وقتی خون از صفر کمتر شد سیستم رگ دال اجرا بشه از کدی مثل این استفاده می کنیم(دوستان این کدها الگو هست):

در مثال زیر ابتدا انیمیشن در حال اجرای جاری را stop می کنیم.

سپس سیستم رگ دال را فعال می کنیم.

همچنین اسکریپت EnemyMovement را که برای حرکت کاراکتر بود غیر فعال می کنیم.(با همین روش شما باید سعی کنید تمام کامپوننت های دیگه رو در اسکریپت خودتون غیر فعال کنید. ما به طور کلی اشاره کردیم)

public void Damage(int damageValue) { 
_currentHealth -= damageValue; 

if (_currentHealth <=0) { 
Animation a = GetComponentInChildren<Animation>(); 
a.Stop();
Ragdoll r = GetComponent<Ragdoll>(); 

if(r != null){ 
r.OnDeath();
} //if

} //if

} //Damage



۰ نظر موافقین ۰ مخالفین ۰ ۱۲ تیر ۹۵ ، ۱۵:۳۷
مدیرکل