«یا اللهُ یا رَبِّ یا حَیُّ یا قَیّوم یا ذَالجَلالِ وَ الاکرام اَسئَلُکَ بِاسمِکَ اَلعَظیم اَلاَعظَم اَن تَرزُقَنی رِزقاً حَلالاً طَیِّباً بِرَحمَتِکَ الواسِعَه یا اَرحَمَ الرّاحِمِین.»
فعال و غیر فعال کردن خاصیت ragdoll در یونیتی_اجرای رگ دال پس از مرگ کاراکتر یا صفر شدن جون :: گیم اور _ بازیسازی با 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



نظرات (۰)

هیچ نظری هنوز ثبت نشده است

ارسال نظر

ارسال نظر آزاد است، اما اگر قبلا در بیان ثبت نام کرده اید می توانید ابتدا وارد شوید.
شما میتوانید از این تگهای html استفاده کنید:
<b> یا <strong>، <em> یا <i>، <u>، <strike> یا <s>، <sup>، <sub>، <blockquote>، <code>، <pre>، <hr>، <br>، <p>، <a href="" title="">، <span style="">، <div align="">
تجدید کد امنیتی