درود مهمان گرامی! ثبت نام

آموزش ساخت بازی با C# آموزش پروژه محور یونیتی Unity آموزش ساخت بازی حدس تصویر
آموزش مدل سازی در Maya آموزش یونیتی Unity- ساخت منو آموزش گنجینه برنامه نویسی اندروید
آموزش مدل سازی با 3Ds Max آموزش متحرک سازی با Unity آموزش گرافیک کامپیوتری با OpenGL
آموزش متحرک سازی در 3Ds Max مجموعه آموزش های ساخت بازی آموزش ساخت بازی در ویژوال بیسیک
● آموزش های رایگان ● تبلیغات دیجیتال هوشمند ● استخدام در فرادرس

امتیاز موضوع:
  • 0 رأی - میانگین امتیازات: 0
  • 1
  • 2
  • 3
  • 4
  • 5
{آموزش} چیز هایی که در یونیتی یاد گرفتم
#1
سلام؛
توی این تاپیک، نکات و کد های کاربردی رو که در مسیر یادگیری یونیتی یاد گرفتم رو اینجا قرار میدم تا بقیه راحت تر پیداش کنن...



1- در یونیتی 5، برای وارد کردن نیرو باید اول get component گذاشت به این صورت:
(مورد 8 رو هم بخونید!)

کد:
GetComponent<Rigidbody> ().AddForce (new Vector3 (0, 0, -120));

2- یه چیزی خوبی به نام RelativeForce هست که مثل اد فورس خالی نیست و اگر گیم آبجکت بچرخه باز هم نیرو از همون جهت اولیه (نسبت به گیم آبجکت) وارد میشه؛ به این صورت:

کد:
GetComponent<Rigidbody> ().AddRelativeForce (new Vector3 (0, 0, -120));

3- برای بستن بازی توی یونیتی اینو میشه استفاده کرد:

کد:
if(Input.GetKey(KeyCode.Escape)){
            Application.Quit();
        }

4- دکمه Escape به جای دکمه بک توی گوشی کار میکنه (توی گیم میکر Backspace هه)...

5- برای استفاده از شیب سنج گوشی میشه از Input.acceleration استفاده کرد و آخرش . و x یا y یا z استفاده کرد به این صورت مثلا:

کد:
transform.Rotate(new Vector3(0,Input.acceleration.x * 4,0));

6- برای جابجا شدن بین scene ها (صحنه ها. همون room ها در گیم میکر) به راحتی از کد زیر استفاده کنید:

کد:
Application.LoadLevel(نام صحنه مورد نظر);

7- برای ساخت دکمه در یونیتی میشه این فرآیند رو طی کرد که روش خوبیه:

یه کد ایجاد کن، داخلش دو تابع با اسمای خاص مثل "pressed" و "released" بساز. یه متغیر هم بساز (هر نوعی)، بعد داخل این تابع ها مقدار این متغیر رو عوض کن (0 و 1 یا a و b).
در آخر هم یه if بذار که بررسی کنه اگه اون متغیر 1 بود یعنی روی کلیک شده بود کار مورد نظر رو انجام بده.

کد رو ذخیره کن.

حالا برو توی محیط طراحی و آبجکتو انتخاب کن و خصوصیت event trigger رو بهش اضافه کن.
دکمه add new event type رو بزن و pointer down و up رو اضافه کن و داخلشون + رو بزن و داخل پایین-چپ کادر اون کدی که تابع های بالا توشه رو اضافه کن؛ بعد از منوی بالا-راست ش زیر منویی که اسم کد هست رو باز کن و از بین توابع، تابع مربوط به حالت (press یا release) رو انتخاب کن.


8- اگر جایی get component لازم شد (مثل اد فورس)، برای اینکه بازی سنگین نشه فقط یک بار کامپوننت رو بگیرین. اینجوری:

کد:
Rigidbody MyRigidbody;
void Awake()
{
      MyRigidbody = GetComponent<Rigidbody>();
}
void Update()
{
      MyRigidbody.AddForce(Vector3.right * 10f);
}


با تشکر از parhamic عزیز.


9- Lerp عملی هست که مثل move to position در گیم میکر عمل میکنه و شکل کلی استفاده ازش این شکلیه:

کد:
transform.Translate (Vector3.Lerp (Vector3.a, Vector3.b, 5f));

نحوه کار با این کد هم اینطوری هست که مثلا ما transform.translate شئ مون رو برابر کد بالا میکنیم و در ورودی اول مکان اولیه در قالب Vector3، در ورودی دوم مکان نهایی در قالب Vector3، و در ورودی سوم هم عدد float یی بین 1 و 0 قرار میدیم.
کیــــــــــــــــــqwerty13ــــــــــوورتی13
پاسخ
 سپاس شده توسط Mehrdad
#2
(یونیتی نسخه 2017.1)

10 - برای گرفتن فاصله بین دو گیم آبجکت دو عدد متغیر GameObject بسازید و بعد از ریختن آبجکت ها در آن:

کد:
int fasele = Vector3.Distance (cube1.transform.position, cube2.transform.position);


10 - برای گرفتن زاویه بین دو گیم آبجکت دو عدد متغیر GameObject بسازید و بعد از ریختن آبجکت ها در آن:

کد:
int zavie = Vector3.Angle (cube1.transform.position, cube2.transform.position);
کیــــــــــــــــــqwerty13ــــــــــوورتی13
پاسخ
#3
12- میخواید راحت از روی یک Prefab بسازید؟ ابتدا یک متغیر GameObject بسازید و بعد از مقدار دهی، با این دستور از روش تولید کنید:

کد:
Instantiate (tir, transform.position, transform.rotation);
//اولی: نام اون گیم آبجکت هه
//دومی: مکان (در مثال از مکان خودِ ایجاد کننده استفاده میشه)
//سومی: زاویه اولیه (در مثال از زاویه خودِ ایجاد کننده استفاده میشه)

13- میخواید یدونه آبجکت رو از بین ببرید؟ ابتدا یک متغیر GameObject بسازید و بعد از مقدار دهی، با این دستور از روش پاک کنید:

کد:
Destroy (GameObject);
//نام گیم آبجکت^
Destroy (GameObject,2f);
//دومی مقدار تاخیر حسب بر حسب ثانیه^
Destroy (this.gameObject,2f);
//پاک کردن خود بعد از 2 ثانیه^
کیــــــــــــــــــqwerty13ــــــــــوورتی13
پاسخ
#4
14- به جای ایونت های راحتِ برخورد گیم میکر، توی یونیتی باید همچین تابعی نوشت (آخه چراااااااااا؟!) :

کد:
void OnCollisionEnter(Collision col){
if (col.gameObject.name = "esm") {

//دستور بعد از برخورد

}
}

<!-- نکته نسبتا مهم: اگر از روی یک Prefab نمونه هایی در بازی ساختید، در انتهای نام آبجکت یک (Clone) قرار می گیرد. -->
کیــــــــــــــــــqwerty13ــــــــــوورتی13
پاسخ
#5
15- برای کنترل سرعت بازی (ایجاد صحنه آهسته) از این کد استفاده کنید:

کد:
Time.timeScale = 0.3f;
//بازه بین 0 تا 1 هست؛
کیــــــــــــــــــqwerty13ــــــــــوورتی13
پاسخ


موضوعات مرتبط با این موضوع...
موضوع نویسنده پاسخ بازدید آخرین ارسال
  آموزش غیر قابل هک کردن متغیرهای بازی در یونیتی fakhtigamer 2 870 5/12/1396، 11:16 عصر
آخرین ارسال: game10000
Star آموزش یونیتی از سایت یونیتی ali.z 0 352 25/4/1396، 03:49 عصر
آخرین ارسال: ali.z
  آموزش شیدر نویسی در یونیتی قسمت 1 ErfanAhmadi 15 6,267 15/3/1396، 05:53 عصر
آخرین ارسال: mamali me
  آموزش یونیتی از مبتدی تا متوسط برنامه ریزی شده amirhosein.raad 24 4,811 26/2/1396، 08:24 عصر
آخرین ارسال: TakOn1
  آموزش پروژه محور یونیتی Hamed-razor 41 9,750 11/7/1395، 10:03 عصر
آخرین ارسال: مسعوووود



کاربرانِ درحال بازدید از این موضوع: 1 مهمان
آموزش ساخت بازی با C# آموزش پروژه محور یونیتی Unity آموزش ساخت بازی حدس تصویر
آموزش مدل سازی در Maya آموزش یونیتی Unity- ساخت منو آموزش گنجینه برنامه نویسی اندروید
آموزش مدل سازی با 3Ds Max آموزش متحرک سازی با Unity آموزش گرافیک کامپیوتری با OpenGL
آموزش متحرک سازی در 3Ds Max مجموعه آموزش های ساخت بازی آموزش ساخت بازی در ویژوال بیسیک
● آموزش های رایگان ● تبلیغات دیجیتال هوشمند ● استخدام در فرادرس