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

ساخت بازی

امتیاز موضوع:
  • 6 رأی - میانگین امتیازات: 4.67
  • 1
  • 2
  • 3
  • 4
  • 5

[-]
کلمات کلیدی
برنامه نویسی و راهکارهایی در یونیتی

برنامه نویسی و راهکارهایی در یونیتی
#81
تکنیک فارسی نویسی در یونیتی:
با استفاده از یک فارسی ساز می تونید متن فارسی رو به یونیتی انتقال داده و از فونت مجازش توی یونیتی استفاده کنید.
به عنوان مثال فونت F_unwan.ttf (فونت هایی که اولشون F داره) برای فارسی ساز Leo moon کار می کنه که می تونید این فونت رو بکشید توی project و سپس یک ui canvas Text ایجاد کرده و فونت رو بکشید روی پارامتر Font در inspector.
سپس متن تایپ شده در Leomoon رو کپی کنید توی فیلد Text در inspector .
resim
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط qwerty13 ، aliheadari ، loosari ، Ali-reza8448v2
#82
اجرای صدا بعد از برخورد دو گیم ابجکت در یونیتی:
نکته ی مهم: این اسکریپت برای برنامه نویسی دو بعدی هست.برای سه بعدی خودتون از توابع 3d استفاده کنید که پیشتر آموش دادم.
یک Audio source Component بدید به Player.
یک اسکریپت سیشارپ با نام collisiondetection با کد زیر ایجاد کنید(البته هر نام مجازی باشه فرق نمی کنه فقط باید همنام کلاسی باشه که توی اسکریپت میاد) و بندازید روی player :
کد php:
using UnityEngine;
using System.Collections;
public class 
collisiondetection MonoBehaviour {
public 
AudioSource audio;
    
    
void Start() {
        
//audio = GetComponent<AudioSource>();
    
}
    
        
void OnTriggerEnter2D(Collider2D other) {
        
Debug.Log("OnTriggerEnter 2D");
        } 

        
void OnCollisionEnter2D(Collision2D coll) {
        
Debug.Log("OnCollisionEnter 2D");
        
audio.Play ();
    }

به کد دقت کنید.
پارامتر audio از نوع Audio Source و به صورت public تعریف شده،.یعنی پارامتر audio رو باید در inspector بکشیم بندازیم روش.
یک کامپوننت Audio source رو برای پلیر add component کنید و یک فایل صوتی رو که قبلا به کادر پروژه drag کردیم رو بکشید بندازید روی پارامتر Audio clip رها کنید.
سپس کامپوننت Audio source رو بکشید بندازید روی پارامتر audio از اسکریپت.
به اسپرایت player یک collider 2d بدید . به گیم ابجکت زمین همونطور.
به اسپرایت player ، یک Rigid body 2d بدید و پارامتر Z در قسمت constraint(محدودیت) رو تیک بزنید تا کاراکتر وقتی می افته روی زمین لغزش نکنه.
resim
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط Ali-reza8448v2
#83
تعریف لیست برای دریافت آیتم ها از ورودی در یونیتی:
زبان سیشارپ
کد php:
public List<stringitems
نکته :
using System.Collections.Generic رو یادتون نره.
مثال :
کد php:
using UnityEngine;
using System.Collections;
using System.Collections.Generic;
public class 
collisiondetection MonoBehaviour {
    public List<
stringitems;
    
void Start() {
    }
    } 
خروجی :
در inspector لیستی به نام items ایجاد میشه که می تونید طول لیست رو در پارامتر size تعیین کنید و ورودی بدید.
resim
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط aliheadari ، sepehr1234 ، moien1 ، Ali-reza8448v2
#84
آموزشی راجع به فیزیک چرخ، ساخت یه چیز چهار چرخ هل دادنی و ترمزش ندارید؟

کیــــــــــــــــــqwerty13ــــــــــورتی13
پاسخ
 سپاس شده توسط Ali-reza8448v2
#85
خوب پلاگین ماشین پلاگین Edy’s Vehicle Physics هست.واسه دانلود:
http://www.gamemakerplugin.ir/%D8%B3%D8%...%AA%DB%8C/
پلاگین های زیاد دیگه هم هستن.
پیاده سازی ماشین چیز زیاد سختی نیست و از ساده ترین سیستم هایی هست که الان اکثر بازی سازیا میسازنش.
اگه آسون نبود این قدر آموزش ازش توی یوتیوب و ... نبود.
اسکریپت های car controller هم هست.حتی توی خود پرومیکرز هم نمونه سیستم هایی بچه ها گذاشتن که می تونید فقط ماشین رو عوض کنید و یک ابجکت empty بذارید زیر و در وسط ماشین که ماشین ملق نزنه و جرم یا پارامتر mass از wheel colliderهایی که به هر یک از چرخ ها می دید رو باید عدد بدید که جرم لاستیکا زیاد بشه و ... .teeth
اما در مورد اینکه چهار تا چرخ بدیم به یک وسیله بحثش اینجا شده منتهی باید با شیلتر باز کنید :
http://s3.picofile.com/file/8212341726/_tut1_003.jpg
http://forum.unity3d.com/threads/basic-t...ial.86703/
لینک بالا هم ساده ترین لینک بود از جنبه بحث های ابتدایی.اگه فیلم های یوتیوب رو ببینید گام به گام گفته مراحل تنظیمات رو.
Rigidbody Collision mode:
دو حالت داره : ‘Discrete‘ یا ‘Continuous‘
Continuous Collision Detection یا CCD مشکل collider overlap رو حل می کنه اما performance بیشتری مصرف می کنه و ممکنه منجر به بروز مشکلات frame rate بشه.مخصوصا روی موبایل.
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط moien1 ، Ali-reza8448v2
#86
نکاتی در مورد کدنویسی کثیف/dirty codeو تمیز/clean code:
سعی کنید برای کدهاتون توضیح بذارید و dirty code رو به clean code ویرایش کنید.
کد تمیز کدی هست که فهم و درک اون آسونتر و کد کثیف کدی هست که فهم و درکش سخت تر باشه.
مثال:
کد کثیف:
کد:
if (Input .GetAxis ("Horizontal")<0)//Left
کد اصلاح شده تمیز:
کد php:
if (Input.GetKey(KeyCode.LeftArrow))//Left 
کد کثیف:
کد:
if (Input .GetAxis ("Horizontal")>0)//Right
کد اصلاح شده ی تمیز:
کد php:
if(Input.GetKey (KeyCode.RightArrow))//Right 
کد کثیف:
کد:
if (Input .GetAxis ("Vertical")>0)//Up
کد اصلاح شده ی تمیز:
کد php:
if (Input.GetKey (KeyCode.UpArrow))//Up 
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط moien1 ، Ali-reza8448v2
#87
اسکریپت های گیم پلی:
به این بخش مراجعه بفرمایید: http://promakers.ir/showthread.php?tid=12196
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط moien1 ، Ali-reza8448v2
#88
نابود شدن گیم ابجکت با کلیک روی آن:
کد php:
void Update (){
        if (
Input.GetMouseButtonDown (0))
            
Destroy (transform.gameObject);

حرکت گیم آبجکت به سمت بالا در زمان بین 2 الی 6 ثانیه:
کد php:
using UnityEngine;
using System.Collections;

public class 
harkat MonoBehaviour {
    public 
float speed=0.01f;
    
// Use this for initialization
    
void Start () {
    
    }
    
    
// Update is called once per frame
    
void Update () {
        if(
2<=Time.time && Time.time <=6)
        
transform.position = new Vector2 (transform.position.xtransform.position.Time.time speed);
    }

از حرکت ایستادن گیم آبجکت بعد از برخورد با شی دیگر:
برای اینکه به هر دو ابجکت کامپوننت Collider می دهیم.
نامرعی کردن گیم ابجکت در یونیتی/مخفی کردن یا invisible کردن گیم ابجکت در یونیتی:
کد php:
GetComponent<Renderer> ().enabled false

بردارهای حرکت در یونیتی:
کد:
Vector3.zero    خلاصش میشه Vector3(0, 0, 0).
Vector3.one    خلاصش میشه Vector3(1, 1, 1).

Vector3.down    خلاصش میشه Vector3(0, -1, 0).
Vector3.up    خلاصش میشه Vector3(0, 1, 0).

Vector3.forward    خلاصش میشه Vector3(0, 0, 1).
Vector3.back    خلاصش میشه Vector3(0, 0, -1).

Vector3.left    خلاصش میشه Vector3(-1, 0, 0).
Vector3.right    خلاصش میشه Vector3(1, 0, 0).
سیستم ضرب برداری هم در اینجا بحث شده قبلا :
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط moien1 ، mdc ، qwerty13 ، aliheadari ، Ali-reza8448v2
#89
اموزش ragdoll رو میزارید؟
پاسخ
 سپاس شده توسط Ali-reza8448v2
#90
آموزش ragdoll هم میذارم چشم. فعلا یکم سرم شلوغه.
تابع CrossFade از کلاس Animator:
کد php:
public void CrossFade(string stateNamefloat transitionDurationint layer = -1float normalizedTime float.NegativeInfinity);
public 
void CrossFade(int stateNameHashfloat transitionDurationint layer = -1float normalizedTime float.NegativeInfinity); 
این متد برای قطع انیمیشن های قبلی و سوئیچ بدون شرط (بدون condition های تعریف شده در پنجره animatior برای انتقال یا transision ها) بکار می رود. برای مثال ممکنه در پنجره Animator روی خطوط انتقال بین انیمیشن ها شرط گذاشته باشیم که مثلا فلان متغیر اگه مقدارش فلان چیز بود اگه روی انیمیشن 1 بود بره به انیمیشن 2 .

اما با استفاده از crossFade در هر وضعیتی که باشیم و هر انیمیشنی که داره اجرا میشه بدون هیچ شرطی قطع می شه و به صورت آنی و فوری سوئیچ میشه روی انیمیشن دلخواه.

مثال :
کد php:
Public Animator anim;
    if(
Input.GetMouseButtonDown(1))
    {
    
PlayerAnimator.CrossFade("Fire",1);
    }
    else
    {
    
PlayerAnimator.CrossFade("Idle",1);
    } 

در مثال فوق متغیر anim از نوع Animator تعریف شد و چون public هست در inspector باید کامپوننت Animator رو بکشیم بندازیم روش.شرط اول می گه اگه کلیک ماوس پایین بود انیمیشن Fire اجرا بشه وگرنه انیمیشن Idle.


stateName: اسم state ای که توی پنجره Animator controller اضافه کردیم.

transitionDuration:مدت زمان انتقال یا سوئیچ به انیمیشن.

normalizedTime: زمان شروع انیمیشن مقصد که به آن سوئیچ می کنیم بوده ومقدارش بین 0 و 1 است.
این مقدار زمان نرمال source state (وضعیت ابتدایی)است.اگه هیچ مقداری به این پارامتر ندیم normalizedTime تنظیم می شود یا مقدار normalizedTime منفی بی نهایت(NegativeInfinity) شناور (float) فرض می شود این مقدار پیشفرض رو با float.NegativeInfinity معرفی می کنیم و وضعیت اگر در حال اجرا نباشد از اول play می شود.(یا از زمان جاری اجرا و هیچ Transition یا سوئیچی بین انیمیشن ها اتفاق نمی افتد).

layer: اسم لایه ای که شامل انیمیشن مقصد هست که قرار است به آن سوئیچ کنیم .اگه مقدار لایه خالی باشد لایه منفی یک(-1) فرض می شود (منفی یک به معنی first state یا وضعیت اول با نام داده شده اجرا می شود یا هش(hash)اجرا خواهد شد.(hash اسم یک state به صورت درهم هست.حالا به چه دردی میخوره)

stateNameHash: هش وضعیت(state hash) از وضعیت مقصد است.اگر مقدار 0 بگیرد،انتقال یا transition به خودش بر می گردد(self)

ما نمی توانیم وضعیت جاری را در یک synchronized layer (لایه ی همگام) تغییر دهیم بلکه باید آن را در لایه ی رجوع شده(Refrenced layer) تغییر دهیم.

منبع :
http://docs.unity3d.com/es/current/Scrip...sFade.html
https://telegram.me/gameoverblog
بیشتر از آنچه برای موفق بودن تلاش می کنی برای با ارزش بودن تلاش کن.آلبرت انیشتین.



پاسخ
 سپاس شده توسط aliheadari ، qwerty13




کاربرانِ درحال بازدید از این موضوع: 1 مهمان