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

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

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

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

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

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

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

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

۳۳ مطلب در آبان ۱۳۹۴ ثبت شده است

یک برنامه نویس دو بعدی یونیتی برای کار گروهی لطفا پیام بذاره.زبان سیشارپ.
ما داریم یه بازی دو بعدی میسازیم و برنامه نویس سیشارپ مسل به یونیتی برای نوشتن گیم پلی نیاز هست.
۱ نظر موافقین ۰ مخالفین ۰ ۲۵ آبان ۹۴ ، ۰۲:۴۴
مدیرکل
منبع:gameover.blog.ir
using UnityEngine;
 using System.Collections;
 //sajjad3011
 public class Indiana2 : MonoBehaviour {
     
     public Vector3 target; // The point user picks for the character to follow
     public bool facingRight = false; // Check where the character is facing
     private int move=0; // Movement direction
     private float maxSpeed = 5f; // Speed of character movement
     private Animator anim; // Reference to the animator
     
     
     // Use this for initialization
     void Start () 
     {
         anim = GetComponent<Animator> ();
     }
 
     void FixedUpdate()
     {
         // Obtaining target point user clicked on screen
         if (Input.GetMouseButton (0))     
         {
             // After user has clicked left mouse button recording mouse position
             Vector3 mousePos = Input.mousePosition;
             // Converting mouse position into coordinate system connected to the camera.
             target = Camera.main.ScreenToWorldPoint (new Vector3 (mousePos.x, mousePos.y, 1f));
 
             // Set movement direction depending on target point
             if (target.x < transform.position.x)
                 move = -1;
             else if (target.x> transform.position.x)
                 move = 1;
             Debug.Log (move);
         }
                 
         // Flip the character if nessessary
         if (move ==1 && ! facingRight)
             Flip ();
         if (move == -1 && facingRight)
             Flip();
         
         // check if arrived to target point
         if (Mathf.Abs (target.x - transform.position.x) < 0.2f)     
         {
             move = 0;
         }
         
         anim.SetInteger ("Movement", Mathf.Abs(move));
         
         // apply velocity to actually make character move
         rigidbody2D.velocity = new Vector2 (move * maxSpeed, rigidbody2D.velocity.y);
         
         
     }
     
     
     void Flip()
     {
         Debug.Log ("In Flip");
         facingRight = !facingRight;
         Vector3 theScale = transform.localScale;
         theScale.x *= -1;
         transform.localScale = theScale;
     }
 }
کد بالا چیز خاصی نداره نقطه ی کلیک رو چک می کنیم اگه x اش بیشتر از پلیر بود move رو مثبت ویلا منفی می کنه.
بعد طبق این mov حرکت به چپ و راست می کنیم خیلی ساده.
تابع Flip() هم بر حسب این mov میاد و localscale رو برای x مثبت منفی می کنه که باعث میشه پلیر به چپ و راست نیگاه کنه.
خط          anim.SetInteger ("Movement", Mathf.Abs(move)); می گه برو تو انیماتور ببین اگه متغیر Movement بود اونو با 1 تنظیم کن که اونجا باس شرط بذارید روی خط انتقال انیمیشن ایستاده به انیمیشن راه رفتن، که اگه مثلا پارامتر Movement یک شد سوئیچ انجام بشه.
Mathf.Abs(move) قدر مطلش متغیر move رو می ده.
حالا چرا قدر مطلق گرفتیم،چون فرقی نداره پلیر به راست یا چپ بخواد بره. در هر دو حالت انیمیشن راه رفتن اجرا می کنیم. فقط localscale رو با کد اومدیم منفی کردیم جایی که حرکت به چپ هست.(یعنی move رو فقط موقع ارسال به انیماتور اومدیم با تابع قدر مطلق Abs مثبت ارسال کردیم)

همه چیزم تر و تمیز نوشتم حالیتون بشه.


واسه درک انیماتور هم اینو بخونید:
http://gameover.blog.ir/1394/04/05/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%85%DA%A9%D8%A7%D9%86%DB%8C%D9%85-%DB%8C%D8%A7-%D8%A7%D8%B1%D8%AA%D8%A8%D8%A7%D8%B7-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D8%A8%D8%A7-%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7%DB%8C-%D9%BE%D9%86%D8%AC%D8%B1%D9%87-%D8%A7%D9%86%DB%8C%D9%85%D8%A7%D8%AA%D9%88%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-animator
منبع اصلی:
http://answers.unity3d.com/questions/895411/2d-character-controller-for-platformer-with-touch.html
۲ نظر موافقین ۰ مخالفین ۰ ۲۳ آبان ۹۴ ، ۲۳:۲۰
مدیرکل
منبع:GAMEOVER.BLOG.IR

using UnityEngine;
using System.Collections;
//csharp code
//Author:Sajjad3011
public class timer1 : MonoBehaviour {
    public Sprite[] sprArr=new Sprite[4];//set it in the inspector
    SpriteRenderer sprRndr1;
    private int i=0;
    // Use this for initialization
    void Start () {
        sprRndr1=this.gameObject.GetComponent<SpriteRenderer> ();//access to component SpriteRenderer
        InvokeRepeating("f1", 1.0f,1.0f);//call function f1() after 1 second


    }

    void  f1()
    {
        Debug.Log (i);
                sprRndr1.sprite = sprArr[i];
        i++;
        if (i > 3) i = 0;

    }//f1

}

بعد از اختصاص اسکریپت به یک 2d object->new sprite باید چهار تا عکس رو بندازید روی متغیرهای public که توی کد ساختیم(در inspector ظاهر میشه که به صورت ورودی مقدار می گیرن)
۰ نظر موافقین ۰ مخالفین ۰ ۲۳ آبان ۹۴ ، ۱۵:۱۹
مدیرکل
۰ نظر موافقین ۰ مخالفین ۰ ۲۳ آبان ۹۴ ، ۱۳:۵۸
مدیرکل

منبع :gameover.blog.ir

مثال 1:

بررسی برخورد گیم ابجکت با تگ p2 به گیم ابجکت با تگ p1:

در اینجا اسکریپت رو میدیم به شی ای که تگ p1 داره.
بعدش به شی دوم تگ p2 می دیم.
یک تابع هم توش تعریف می کنیم مثلا برای صدمه خوردن به اسم ApplyDamage که عدد صدمه خوردن رو از ورودی می گیره و از میزان متغیر خون که نیاز به تعریفش هست کم می کنه و حالا روی ui text یا نوار خون نمایش میدیم با کد نویسی:


using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void OnCollisionEnter2D(Collision2D coll) {
        if (coll.gameObject.tag == "p2")
            coll.gameObject.SendMessage("ApplyDamage", 10);
        
    }
}



مثال2:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void OnCollisionEnter2D(Collision2D coll) {
        if (coll.gameObject.tag == "Enemy")
            coll.gameObject.SendMessage("ApplyDamage", 10);
        
    }
}

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

http://gameover.blog.ir/1394/07/22/%D8%A8%D8%B1%D8%B1%D8%B3%DB%8C-%D8%A8%D8%B1%D8%AE%D9%88%D8%B1%D8%AF-%D8%A8%D8%A7-%D8%A7%D8%B4%DB%8C%D8%A7%DB%8C%DB%8C-%DA%A9%D9%87-%D8%AF%D8%B1-%D9%85%D9%82%D8%A7%D8%A8%D9%84-%D9%85%D8%A7-%D9%82%D8%B1%D8%A7%D8%B1-%D8%AF%D8%A7%D8%B1%D9%86%D8%AF-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C
۰ نظر موافقین ۰ مخالفین ۰ ۲۲ آبان ۹۴ ، ۲۳:۰۷
مدیرکل

منبع :gameover.blog.ir

برای اینکار ابتدا یک دوربین توی صحنه داریم.
یک فایل تصویری به اسم screenShot.png در مسیر جاری داریم.
یک اسکریپت csharp برای ایجاد دکمه ی آپلود می سازیم به اسم test.cs می سازیم و ربطش می دیم به دوربین:
[تصویر: unity_design_script_upload.jpg]
سورس اسکریپت سیشارپ test.cs :

//test.cs
using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {
    
    // Use this for initialization
    void Start () {
        
    }
    
    // Update is called once per frame
    void Update () {
        
    }
    
    void OnGUI()
    {
        GUI.Label(new Rect(100, 0, 500, 20), Application.dataPath);
        if (GUI.Button(new Rect(100, 100, 150, 20), "Upload"))
        {
            UploadFile("http://yourSiteName.pergig.ir/upload/upload_file.php");
        }
    }
    
    IEnumerator UploadFileCo(string uploadURL)
    {
        print ("file://" + Application.dataPath + "/screenShot.png");
        WWW localFile = new WWW("file://" + Application.dataPath + "/screenShot.png");
        yield return localFile;
        WWWForm postForm = new WWWForm();
        postForm.AddBinaryData("file", localFile.bytes, "screenShot.png", "image/png");
        WWW upload = new WWW(uploadURL, postForm);
        yield return upload;
        if (upload.error == null)
        {
            Debug.Log(upload.text);
        }
        else
        {
            Debug.Log("Error during upload: " + upload.error);
        }
    }
    
    void UploadFile(string uploadURL)
    {
        StartCoroutine(UploadFileCo(uploadURL));
    }
}

کد بالا رو ذخیره کنید و بکشید روی دوربین رها کنید.

به جای "http://yourSiteName.pergig.ir/upload/upload_file.php" آدرس فایل upload_file.php رو بدید.
اینم سورس upload_file.php که باید روی یک هاست php بذاریدش:

//upload_file.php
<?php
$allowedExts = array("gif", "jpeg", "jpg", "png");
$temp = explode(".", $_FILES["file"]["name"]);
$extension = end($temp);

if ((($_FILES["file"]["type"] == "image/gif")
|| ($_FILES["file"]["type"] == "image/jpeg")
|| ($_FILES["file"]["type"] == "image/jpg")
|| ($_FILES["file"]["type"] == "image/pjpeg")
|| ($_FILES["file"]["type"] == "image/x-png")
|| ($_FILES["file"]["type"] == "image/png"))
&& ($_FILES["file"]["size"] < 20000)
&& in_array($extension, $allowedExts)) {
  if ($_FILES["file"]["error"] > 0) {
    echo "Return Code: " . $_FILES["file"]["error"] . "<br>";
  } else {
    echo "Upload: " . $_FILES["file"]["name"] . "<br>";
    echo "Type: " . $_FILES["file"]["type"] . "<br>";
    echo "Size: " . ($_FILES["file"]["size"] / 1024) . " kB<br>";
    echo "Temp file: " . $_FILES["file"]["tmp_name"] . "<br>";
    if (file_exists("upload/" . $_FILES["file"]["name"])) {
      echo $_FILES["file"]["name"] . " already exists. ";
    } else {
      move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);//move uploaded file into "upload" folder in current dir
      echo "Stored in: " . "upload/" . $_FILES["file"]["name"];
    }
  }
} else {
  echo "Invalid file";
}
?>

نکته: کد

<?php
move_uploaded_file($_FILES["file"]["tmp_name"], "upload/" . $_FILES["file"]["name"]);
?>

باعث میشه فایل یا عکس آپلود شده move بشه به پوشه ی دیگه ای به نام upload که روی سایت باید در مسیر upload_file.php ایجادش کرده باشید(علت این کار اینه که هر فایلی بعد از آپلود ابتدا توی یه پوشه ی موقتی روی سایت ذخیره میشه و حتما باید از تو پوشه ی temporary یا پوشه ی فایل های موقت ، انتقالش بدیم به جای دیگه وگرنه توسط موتورهای امنیتی سایت به طور خودکار حذف میشه. علتش هم سیاست های هر سایت هست که از درک این بحث خارجه)
[تصویر: upload_file.jpg]

شما می تونید روی pergig.ir یه هاست رایگان php بگیرید و توی پوشه ی htdocs یه پوشه به اسم upload بسازید و فایل upload_file.php و همچنین یک پوشه ی upload رو داخلش ایجاد کنید و آدرس رو به اسکریپت یونیتی بدید.
---
هرکی مشکل داشت بپرسه ازم
اینم یک شات از صحنه ی بعد از آپلود :
[تصویر: after_upload.jpg]
۱ نظر موافقین ۰ مخالفین ۰ ۲۲ آبان ۹۴ ، ۲۲:۳۹
مدیرکل

منبع :gameover.blog.ir

شکل کلی :

public void InvokeRepeating(string methodName, float time, float repeatRate);

توضیح :

اولین پارامتر اسم تابعی هست که می خوایم مدام اجراش کنیم.

دومین پارامتر زمان انتظار برای اولین شروع بر حسب ثانیه هست.

سومین پارامتر هم زمان تاخیر بین هر فراخوانی هست.

مثال: کد زیر بلافاصله(بعد از صفر ثانیه انتظار) تابع دلخواه رو اجرا می کنه و هر 1 ثانیه دوباره اونو اجرا می کنه:

InvokeRepeating("YOUR FUNCTION NAME", 0, 1.0f);

دقت کنید که حتما باید توی Start بذاریدش نه update. مثال :
void Start () {
InvokeRepeating("f1", 1.0f,1.0f);//call function f1() every 1 second
}
در مثال فوق تابع f1 هر ثانیه یکبار فراخوانی میشه.

تابع Invoke هم هست . این تابع برای اجرای یک تابع دیگه فقط یکبار بدون تکرار بکار می ره.
مثال:
 اگه بخوایم 2  ثانیه صبر کنیم بعدش تابعی رو اجرا کنیم این کد رو اجرا می کنیم:
Invoke("YOUR FUNCTION NAME", 2);

به جای YOUR FUNCTION NAME اسم تابعی که ساختیم رو می ذاریم.
دقت کنید که حتما باید توی Start بذاریدش نه update.

یه مثال دیگه میزنم:
اسکریپت سیشارپ زیر باعث میشه هر ثانیه یکی از 4 اسپرایت ورودی روی اسپرایت شما تنظیم بشه(یادتون نره 4 متغیر public که تعریف می کنیم در زیر، در inspector ظاهر خواهند شد و باید عکس اسپرایت ها رو بکشیم بندازیم روشون. بعد از اختصاص اسکریپت به new sprite ساخته شده در یونیتی 5):
using UnityEngine;
using System.Collections;
//Author:Sajjad3011
public class timer1 : MonoBehaviour {
	public Sprite[] sprArr=new Sprite[4];//set it in the inspector
	SpriteRenderer sprRndr1;
	private int i=0;
	// Use this for initialization
	void Start () {
		sprRndr1=this.gameObject.GetComponent<SpriteRenderer> ();//access to component SpriteRenderer
		InvokeRepeating("f1", 1.0f,1.0f);//call function f1() after 1 second


	}
	// Update is called once per frame
	void   Update () {

	}
	void  f1()
	{
		Debug.Log (i);
		sprRndr1.sprite = sprArr[i];
		i++;
		if (i > 3) i = 0;

	}//f1

}


سوالی بود بپرسید.
۳ نظر موافقین ۰ مخالفین ۰ ۲۲ آبان ۹۴ ، ۲۲:۳۳
مدیرکل

منبع:gameover.blog.ir
کد سیشارپ:
public class PostURL : MonoBehaviour {
 
     void Start () {
         string url = "http://example.com/script.php";
         WWWForm form = new WWWForm();
         form.AddField("var1", "value1");
         form.AddField("var2", "value2");
         WWW www = new WWW(url, form);
         StartCoroutine(WaitForRequest(www));
     }
     IEnumerator WaitForRequest(WWW www)
     {
         yield return www
         // check for errors
         if (www.error == null)
         {
             Debug.Log("WWW Ok!: " + www.data);
         } else {
             Debug.Log("WWW Error: "+ www.error);
         }    
     }

۰ نظر موافقین ۰ مخالفین ۰ ۲۱ آبان ۹۴ ، ۰۰:۴۰
مدیرکل

منبع:gameover.blog.ir


shift+A بزنید تا پنجره Add باز بشه.
یک سیلندر انتخاب کنید تا ایجاد بشه.
Tab بزنید تا به Edit mode بریم.
Z بزنید تا به مد سیمی wire بریم.
1 بزنید تا به نمای روبرو بریم.
5 بزنید تا به نمای دو بعدی(ارتوگرافیک بریم)(برای بازگشت به حالت پرسپکتیو بازم 5 می زنیم)
چند بار + رو بزنید تا zoom بشه.
A رو بزنید تا همه چیز از حالت انتخاب خارج بشه.
ctrl+tab زده و سپس روی حالت انتخاب راس ها بذارید.(vertex)
B بزنید و نصف سیلندر رو انتخاب و حذف کنید.(Delete و سپس vertices).
[تصویر: ctrl_B.jpg]
دوباره Z می زنیم و به حالت غیر سیمی بر می گردیم.
5 می زنیم و از حالت ارتوگرافیک به حالت پرسپکتیو بازگشت می کنیم.
tab می زنیم و از Edit mode به Object mode سوئیچ می کنیم.
با راست کلیک ابجکت رو انتخاب می کنیم.
R و سپس Y زده و عدد منفی نود(-90) رو تایپ و enter می کنیم تا حول محور Y به اندازه ی زاویه ی 90 درجه به چپ بچرخه.
با کلید 4 و 6 و 8 و 2 می تونیم و همینطور اگه نیاز بود کلید ctrl می تونیم مدل رو بچرخونیم و از زاویه های مختلف صحنه بهش نگاه کنیم.
برای اینکه تونل بهتری بسازید می تونید با shift+D یک کپی از مدل ساخته شده بگیرید(D به معنی Duplicate هست) و با کلید S و حرکت ماوس مدل رو Scale کنید.
سپس در نمای wireframe (کلید Z) و همون کلید هایی که گفتم از زوایای مختلف بهش نگاه کنید و S و سپس X زده و طول تونل رو حول محور X با ماوس کوچک یا زیاد کنید تا دقیقا طول هر دو یکی باشه.
سپس با کلید shift و راست کلیک می تونید هر دو تا رو انتخاب کنید و با کلید ctrl+J اونا رو join و تبدیل به یک مش برای ویرایش کنید.
بعد از اون می تونید طبق آموزش های قبلی قسمت های لازم رو به هم متصل و پر کنید

با کلید F بینشون پر میشه.
[تصویر: select_and_Full_between_vertices.jpg]
(سوالی بود پ.خ)موفق باشید.

(سوالی بود پ.خ)موفق باشید.

۰ نظر موافقین ۰ مخالفین ۰ ۱۹ آبان ۹۴ ، ۱۶:۴۳
مدیرکل

منبع :gameover.blog.ir

متناسب کردن بازی با صفحات مختلف اندروید

داخل unity 5 در کادر هایرارکی(hierarchy یا کادر اجزای صحنه) دکمه ی create->ui رو بزنید و سپس یک button رو ایجاد کنید.
به صورت پیشفرض خودش یک کادر canvas ایجاد می کنه که باعث میشه همیشه دکمه یا اشیا ی واسط کاربری شما روی اون قرار بگیره.
بعدش حالت شناور بودن رو باید تنظیم کنید . مثل چپ چین،راست چین افقی یا عمودی و ....(در inspector قسمت rect transform ):
[تصویر: shenavar_ui_unity5.jpg]

۰ نظر موافقین ۰ مخالفین ۰ ۱۹ آبان ۹۴ ، ۱۲:۴۰
مدیرکل

مثلا << یا >> یا غیره :


https://msdn.microsoft.com/en-us/library/6a71f45d.aspx

۰ نظر موافقین ۰ مخالفین ۰ ۱۹ آبان ۹۴ ، ۱۲:۳۸
مدیرکل
منبع:gameover.blog.ir
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Update() {
        Vector3 fwd = transform.TransformDirection(Vector3.forward);
        if (Physics.Raycast(transform.position, fwd, 10))
            print("There is something in front of the object!");
        
    }
}

۰ نظر موافقین ۰ مخالفین ۰ ۱۸ آبان ۹۴ ، ۱۰:۴۰
مدیرکل

منبع:

gameover.blog.ir

این PDF رو از zip در آورده و با برنامه ی Adobe Reader بخونید

منبع : http://www.unity3d.com
به لینک pdf زیر برید چند ثنیه صبر کرده و سپس رد تبلیغ بزنید:

http://opizo.com/wSVgB8


نمی دونم چرا دوستان فقط چند نفر دانلود کردن.
توی این اموزش انواع فراخوانی تابع rayCast رو با مثال آوردم و کامل توضیح دادم. توی سایت اصلی unity3d.com هم برید وبسایت نویسان unity3d.com اشتباهاتی رو دارن که ممکنه جبران ناپذیر باشه. واسه همین اقدام به ترجمه و تغییر نوع آموزش سایت unity3d.com کردم.

توی این آموزش سعی کردم کاربران زیادی رو از گیجی در بیارم تا بدونن وقتی تابع Physics.Raycast یکبار به سه پارامتر و یکبار با دو پارامتر و یک بار با 4 پارامتر فراخوانی میشه یعنی چی و چه ورودی هایی رو باید بده.

کاربرد:

مثلا اشعه پرت می کنه تا موانع رو detect کنه.

به هر جهت می خوای تا فاصله مشخص ray می اندازی

برای باز شدنانیمیشن درب در صورت اینکه دوربین از روبرو ببینه.

شرط می ذاری اگه tag  مانع با تگ ما یکی بود کد بعدی رو اجرا کنه

بعدش انیمیشن اجرا کن(window=->Animation درب رو  رو انیمیت کن)

loop Time =false بذارید تا انیمیشن تکرار نشه و فقط یه بار درب باز شه.


مثال :تشخیص مانع روبرو با استفاده از تگ:


bool isOpen=false;
float distance=3f;
 void myRaycast(){
RaycastHit hit;
Ray myRay = new Ray(transform.position, Vector3.forward);
if(Physics.Raycast (myRay, out hit, distance)){
if(hit.collider.tag == "door" && isOpen==false){
Animation.Play("openDoor");
isOpen=true;
}//if internal
}//if external
}//myRaycast()
۶ نظر موافقین ۰ مخالفین ۰ ۱۸ آبان ۹۴ ، ۱۰:۲۷
مدیرکل
۰ نظر موافقین ۰ مخالفین ۰ ۱۸ آبان ۹۴ ، ۱۰:۱۴
مدیرکل

gameover.blog.ir

سازنده:sajjad3011

http://s8.picofile.com/file/8271848476/blenderBookGameover.jpg

https://zarinp.al/574351

هر مشکلی در دانلود بود بهم زنگ بزنید یا توی وبلاگ پیام بدید

یا پیامک بذارید

09358077198

۰ نظر موافقین ۰ مخالفین ۰ ۱۵ آبان ۹۴ ، ۲۲:۲۳
مدیرکل
منبع:gameover.blog.ir

یک 2d object->sprite ایجاد و اسکریپت سیشارپ با نام changeSprite  (حتما باید همنام با کلاس داخل اسکریپت باشه) بسازید و بدید بهش:
//changeSprite runTime
//lang:csharp
//author:sajjad3011
//attach this script to your 2dobject sprite
using UnityEngine;
using System.Collections;

public class changeSprite : MonoBehaviour {
	public Sprite spr1;//set it in the inspector
	public Sprite spr2;//set it in the inspector
	SpriteRenderer sprRndr1;
	// Use this for initialization

	void Start(){
		sprRndr1=this.gameObject.GetComponent<SpriteRenderer> ();//access to component SpriteRenderer
	}
	// Update is called once per frame
	void Update () {
		if (Input.GetKey (KeyCode.Keypad1)||Input.GetKey (KeyCode.Alpha1)) {
			sprRndr1.sprite = spr1;
		}
		else
		if (Input.GetKey (KeyCode.Keypad2)||Input.GetKey (KeyCode.Alpha2)) {
			sprRndr1.sprite = spr2;
		}
	}
}
یادتون نره دو تا عکس بندازید روی پارامترهای spr1 و spr2 در ورودی اسکریپت(در inspector)
سپس اجرا کنید. با کلید 1 و 2 اسپرایت ها تعویض میشه.

روش دوم بدون متغیر public و با استفاده از مسیر فایل png :

نکته ی بسیار مهم :

ابتدا حتما باید پوشه ای به مسیر Assets/Resources ایجاد  کنید.


سپس پوشه ای که حاوی اسپرایت ها هست بریزید توش. مثل spritesFolder به مسیر Assets/Resources/spritesFolder

حال داخل پوشه ی Assets/Resources/spritesFolder یک فایل به اسم mySprite.png داریم که می خوایم با کد اونو در لحظه ی اجرا لود کنیم.

به زبان سیشارپ اینطوری می شه :

GetComponent<SpriteRenderer>().sprite = 
    Resources.Load<Sprite>("spritesFolder/mySprite");

۰ نظر موافقین ۰ مخالفین ۰ ۱۵ آبان ۹۴ ، ۱۳:۵۸
مدیرکل
منبع:gameover.blog.ir

روش یک:
دو متغیر از نوع Camera تعریف کنید که public باشن.
بعدش دو دوربین بذارید توی صحنه و هر دو رو درگ کنید روی متغیرهای cam1 و cam2 مثالمون.
بعدش کد مثل این رو داریم که اگه 1 یا 2 زدیم سوئیچ کنه بین دو دوربین:
public GameObject cam1,cam2;
void Update () {
    
     if(Input.GetKey("1")){
       Debug.Log("Using Camera 1");
      cam1.SetActive(true);
      cam2.SetActive(false);
      }
  if(Input.GetKey("2")){
       Debug.Log("Using Camera 2");
      cam2.SetActive(true);
      cam1.SetActive(false);
      }
     }


روش دو:
نکته: کد به زبان js هست. هرچند کد سیشارپ رو توصیه می کنم اما به علت کمبود وقت سرعتی کپی کردم.
شما سعی کنید حتما کد رو به سیشارپ تغییر بدید چون ساختار سیشارپ خیلی بهتر و استاندارد تر هست و م کلا js(جاوااسکریپت) رو توصیه نمی کنم.(اکثر حرفه ای ها هم بعد از مدتی به سیشارپ روی می آرن . شاید فکر کنید سخته اما من قول میدم بعدا می فهمید سیشارپ حتی از js آسونترم هست و لذت می برید)

اگه به مشکلی برخوردید بپرسید.

Switching Cameras at runtime
[تصویر: camera_switch_runTime.jpg]
برای تغییر دوربین در بازی میخوام الگوریتم یا راهکاری رو برای حل این مسئله یاد بدم با توجه به تحقیقاتم.

اصل کار اینطوری هست :

کد js:
function Update(){
       if(Input.GetKey("1")){
      Debug.Log("Using Camera One");
      camSwap(1);
       }
    }
    function camSwap(currentCam : int){
     
    }
کد بالا یه کار تمیز هست فعلا کامل نیست . فقط اومده صورت مسئله رو ساده کرده و می گه اگه "1" زدیم عدد 1 رو بده به ورودی تابعی به نام camSwap که جلوتر کدهاشو میاریم واسه سوئیچ دوربین روی ابجکت دلخواه.

کد js:
function camSwap(currentCam : int){
     var cameras = GameObject.FindGameObjectsWithTag("cam");
     
     for (var cams : GameObject in cameras){
      cams.GetComponent(Camera).enabled = false;
     }
    }
ما فرض کردیم توی پروژه خودمون سه تا دوربین به اسم "cam" داریم و توی اسکریپت فوق با استفاده از GetComponent دوربین ها رو موقتا غیر فعال می کنیم.

حالا دوربین دلخواه رو کدی که در ادامه میاریم به عنوان دوربین جاری فعال می کنیم :
کد js:
var oneToUse : String = "Camera"+currentCam;
     gameObject.Find(oneToUse).GetComponent(Camera).enabled = true;
یادتون نره اسم دوربین ها رو Camera1, Camera2, Camera3 بذارید.

اینک اسکریپت کامل به دو زبان :
کد js:(توصیه نمی کنم)
//js


    function Update () {
     if(Input.GetKey("1")){
      Debug.Log("Using Camera One");
      camSwap(1);
     }
     if(Input.GetKey("2")){
      Debug.Log("Using Camera Two");
      camSwap(2);
     }
     if(Input.GetKey("3")){
      Debug.Log("Using Camera Three");
      camSwap(3);
     }
    }
     
    function camSwap(currentCam : int){
     var cameras = GameObject.FindGameObjectsWithTag("cam");
     
     for (var cams : GameObject in cameras){
      cams.GetComponent(Camera).enabled = false;
     }  
     
     var oneToUse : String = "Camera"+currentCam;
     gameObject.Find(oneToUse).GetComponent(Camera).enabled = true;
    }
کد csharp:

//csharp

    using UnityEngine;
    using System.Collections;
     
    public class camControl : MonoBehaviour {
     
     void Update () {
      if(Input.GetKey("1")){
       Debug.Log("Using Camera One");
       camSwap(1);
      }
      if(Input.GetKey("2")){
       Debug.Log("Using Camera Two");
       camSwap(2);
      }
      if(Input.GetKey("3")){
       Debug.Log("Using Camera Three");
       camSwap(3);
      }
     }
     
     void camSwap(int currentCam){
      GameObject[] cameras = GameObject.FindGameObjectsWithTag("cam");
     
      foreach (GameObject cams in cameras){
       Camera theCam = cams.GetComponent<Camera>() as Camera;
       theCam.enabled = false;
      }  
     
      string oneToUse = "Camera"+currentCam;
      Camera usedCam = GameObject.Find(oneToUse).GetComponent<Camera>() as Camera;
      usedCam.enabled = true;
     }
    }
منبع اصلی:
http://promakers.ir/showthread.php?tid=8769
www.unity3dstudent.com/2010/12/switching-cameras-at-runtime/
۰ نظر موافقین ۰ مخالفین ۰ ۱۳ آبان ۹۴ ، ۱۹:۱۶
مدیرکل
منبع:gameover.blog.ir
در کادر اجزای صحنه(hierarchy)(هایرارکی) راست کلیک و create->ui->text بزنید تا یک کادر متنی ایجاد بشه. خصوصیات عمودی و افقی (horizontal+vertical)رو در inspector روی overflow(سرریز چند خطی) تنظیم کنید بقیه خصوصیات مثل اندازه و نوع و رنگ فونت رو هم می تونید همونجا دستکاری کنید به علاوه ی چپ چین و راست چین و وسط چین افقی و عموی و...
http://s3.picofile.com/file/8220935542/ui_text_unity5.jpg
۰ نظر موافقین ۰ مخالفین ۰ ۱۳ آبان ۹۴ ، ۱۸:۰۷
مدیرکل
منبع:gameover.blog.ir
این کد سیشارپ رو بدید به هر اسپرایتی که می خواید(مثلا تک تک اسپرایت های player مثل دست و پا و .... . دقت کنید نباید به والد بدید و به تک تکشون باید بدید):
(با کلید R و A و G و B  مقدار Red و green و blue و alpha رو زیاد می کنید و نتیجه رو می بینید. رنک رو هم توی پارامتر color در inspector می تونید تنظیم کنید):
نظر یادتون نره:
using UnityEngine;
using System.Collections;

public class alpha : MonoBehaviour {
	
	public Color altColor = Color.black;
	public Renderer rend; 
	
	//I do not know why you need this?
	void Example() {         
		altColor.g = 0f;         
		altColor.r = 0f;        
		altColor.b = 0f;         
		altColor.a = 0f;     
	}      
	
	void Start ()
	{       
		//Call Example to set all color values to zero.
		Example();
		//Get the renderer of the object so we can access the color
		rend = GetComponent<Renderer>();
		//Set the initial color (0f,0f,0f,0f)
		rend.material.color = altColor;
	}      
	
	void Update() 
	{
		if (Input.GetKey (KeyCode.G)){  
			//Alter the color          
			altColor.g += 0.1f;
			//Assign the changed color to the material.
			rend.material.color = altColor;
		}
		if (Input.GetKey (KeyCode.R)){  
			//Alter the color           
			altColor.r += 0.1f;
			//Assign the changed color to the material. 
			rend.material.color = altColor;
		}
		if (Input.GetKey (KeyCode.B)){  
			//Alter the color            
			altColor.b += 0.1f;
			//Assign the changed color to the material. 
			rend.material.color = altColor;
		}
		if (Input.GetKey (KeyCode.A)){ 
			//Alter the color          
			altColor.a += 0.1f;
			//Assign the changed color to the material. 
			rend.material.color = altColor;
		}
	}         
}
منبع اصلی که از روش ویرایش هایی رو انجام دادیم:
http://answers.unity3d.com/questions/60453/fading-out-using-rendermaterialcolora-doesnt-work.html
۰ نظر موافقین ۰ مخالفین ۰ ۱۲ آبان ۹۴ ، ۱۳:۵۲
مدیرکل

منبع:gameover.blog.ir


[تصویر: water_unity.jpg]
[تصویر: water2.jpg]
دو تا کلیپ از کار خودم توی یونیتی رو ببینید.(حجم هر کدوم نزدیک 1 مگ هست/زیاد نیست دان کنیدsmiley)
http://opizo.com/GQxLKX

http://opizo.com/GNXhGJ


نکته: باید به لینک های فوق بردی و چند صانیه صبر کنید بعدش رد تبلیغ رو بزنید.

Unity.Pro.v4.3.4f1 رو باز کنید و یک پروژه جدید رو ایجاد کنید و یک صحنه ی جدیدبسازید.
در PROJECT روی گزینه ی assets کلیک کنید و سپس در پنل راست، راست کلیک کرده و import package و سپس Water pro only رو بزنید.
[تصویر: importpackagewaterproonly.gif]
http://s5.picofile.com/file/8117441492/i...roonly.gif
در پنجره ی باز شده همه ی پکیج ها رو انتخاب کنید(دکمه ی All) و سپس import .
[تصویر: importPackage.gif]
http://s5.picofile.com/file/8117441942/i...ackage.gif
حالا در پنل project روی گزینه assets و سپس standart assets و سپس water pro only کلیک کنید.
سپس یک نمونه Daylight Water رو با ماوس بگیرید و بکشید توی صحنه و موقعیت اون رو در بخش position از inspector بذارید روی (0و0و0)
[تصویر: drag_water.jpg]
سپس روی دکمه ی play کلیک کنید(برای خروج دوباره روی Play بزنید و با هیچ کدوم از دکمه های pause و بقیه کار نکنید چون قاطی می کنه صحنه رو و کارتون موقع ذخیره به هم میریزه و undo میشه)
صحنه باید شبیه زیر بشه :
[تصویر: render1_water.jpg]
http://s5.picofile.com/file/8117444334/r..._water.jpg
البته من یه نور مستقیم(directional light) هم گذاشتم و یک cube با تکستچر خزه/چمنی(با R و E و W به ترتیب Scale و Rotate و Move کردم)
برای اینکه صحنه یا آب بهتری داشته باشید وارد پوشه ی Water4 بشید و Water4Example (Advanced) رو بکشید توی صحنه و مختصات position رو بذارید روی (0و0و0)
و دوباره Render بگیرید:
[تصویر: render2_water.jpg]
http://s5.picofile.com/file/8117444850/r..._water.jpg
البته بازم اگه می خواید بهتر بشه می تونید در Hierarchy ابجکت Daylight Water قبلی رو delete کنید:
و پس Play کنید:
[تصویر: water_lastRender.jpg]
http://s5.picofile.com/file/8117445250/water_lastRender.jpg
سوالی بود بپرسید.

رنگ آب و رنگ انعکاس(Reflection) رو هم می تونید در بخش Main color در inspector تغییر بدید.
[تصویر: green_water.jpg]
http://s5.picofile.com/file/8117450934/green_water.jpg
داخل یونیتی باشه یا نباشه بعضیا بلد نیستن.من خودم هم بلد نبودم اینو.حالا که یاد گرفتم بد کردم دارم یاد میدم ؟ شاید بعضیا مبتدی باشن بلد نباشن. بعدش یاد می گیرن خیلی خوشحال میشن.
اینم کل آموزش این صفحه که HTML رو save و zip کردم یه جا دانلود کنید:
http://s5.picofile.com/file/8117459218/water_unity_html_sajjad3011.zip.html

۳ نظر موافقین ۰ مخالفین ۰ ۱۲ آبان ۹۴ ، ۱۲:۰۲
مدیرکل

منبع:gameover.blog.ir

http://s6.picofile.com/file/8245131750/easyT.jpg

حرکت دو بعدی پلیر در یونیتی به وسیله ی easy touch version 3
حرکت دو بعدی player
ویرایش:1/26/2016:


۹ نظر موافقین ۰ مخالفین ۰ ۱۱ آبان ۹۴ ، ۰۹:۲۶
مدیرکل
منبع:gameover.blog.ir
سازنده این آموزش:سجاد
http://s5.picofile.com/file/8114475226/flag_in_wind_blender.pdf.html
با این آموزش ساخت پرچم متحرک در باد رو یاد می گیرید و رندر کردن.
می تونید زاویه ی دوربین رو با انتخاب دوربین و فشردن کلید R و سپس z و تایپ زاویه در بلندر تغییر بدید(R به معنی rotate یا چرخش و z منظورش چرخیدن حول محور z هست)
۱ نظر موافقین ۰ مخالفین ۰ ۱۱ آبان ۹۴ ، ۰۸:۳۶
مدیرکل
منبع:gameover.blog.ir
بعد از unzip فایل html رو با مروگر فایرفاکس باز بفرمایید.(نکته:کدنویسی گفته نشده اما سوالی بود پیام بذارید):
http://www.mediafire.com/download/58g2v6oj4xfw46o/level+selection+menu+unity5.zip
۰ نظر موافقین ۰ مخالفین ۰ ۱۱ آبان ۹۴ ، ۰۷:۴۳
مدیرکل
منبع:gameover.blog.ir
using UnityEngine;
using System.Collections;

public class DrawLine : MonoBehaviour
{
 //reference to LineRenderer component
 private LineRenderer line; 
 //car to store mouse position on the screen
 private Vector3 mousePos;
 //assign a material to the Line Renderer in the Inspector
 public Material material;
 //number of lines drawn
 private int currLines = 0;

 void Update ()
 {
  //Create new Line on left mouse click(down)
  if(Input.GetMouseButtonDown(0))
  {
   //check if there is no line renderer created
   if(line == null){
    //create the line
    createLine();
   }
   //get the mouse position
   mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
   //set the z co ordinate to 0 as we are only interested in the xy axes
   mousePos.z = 0;
   //set the start point and end point of the line renderer
   line.SetPosition(0,mousePos);
   line.SetPosition(1,mousePos);
  }
  //if line renderer exists and left mouse button is click exited (up)
  else if(Input.GetMouseButtonUp(0) && line)
  {
   mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
   mousePos.z = 0;
   //set the end point of the line renderer to current mouse position
   line.SetPosition(1,mousePos);
   //set line as null once the line is created
   line = null;
   currLines++;
  }
  //if mouse button is held clicked and line exists
  else if(Input.GetMouseButton(0) && line)
  {
   mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
   mousePos.z = 0;
   //set the end position as current position but dont set line as null as the mouse click is not exited
   line.SetPosition(1, mousePos);
  }
 }
 
 //method to create line
 private void createLine()
 {
  //create a new empty gameobject and line renderer component
  line = new GameObject("Line"+currLines).AddComponent<LineRenderer>();
  //assign the material to the line
  line.material =  material;
  //set the number of points to the line
  line.SetVertexCount(2);
  //set the width
  line.SetWidth(0.15f,0.15f);
  //render line to the world origin and not to the object's position
  line.useWorldSpace = true;  

 }
}
منبع اصلی:
http://www.thegamecontriver.com/2015/05/how-to-draw-line-on-screen-in-unity-csharp.html
۲ نظر موافقین ۰ مخالفین ۰ ۱۱ آبان ۹۴ ، ۰۷:۲۲
مدیرکل
منبع:gameover.blog.ir

http://opizo.com/AmxLMN


این ورژن از ورژن های 4 و ... هم بهتر هست و اگه توی کدنویسی و حرکت کاراکتر و پرش و ... با استفاده از این پلاگین مشکلی داشتید سوال کنید.

نکته: اگه  در uinity 5.1.0.f3 کار می کنید پکیج رو که import کردید پیام میده حتما yes بزنید یا go ahead
اگه no زدید منوی tool اضافه نمیشه باید asset ایمپورت شده رو انتخاب و حذف کنید و دوباره ایمپورت کنید.

برای افزودن هم منوی Tools->HedgehogTeam->EasyTouch->Extensions->Add a new joystick رو برید:http://s7.picofile.com/file/8245131284/EasyTouch.jpg
بعد از اجرا جوی استیک خودش اضافه میشه.

http://s6.picofile.com/file/8245131750/easyT.jpg



نمونه کد هم اینجاست :
http://gameover.blog.ir/1394/08/11/%DA%A9%D8%AF-%D8%AD%D8%B1%DA%A9%D8%AA-%D9%BE%D8%B1%D8%B4-%D8%AF%D8%A7%D8%A8%D9%84-%D8%AC%D8%A7%D9%85%D9%BE-%D8%B1%D8%A7%D9%87-%D8%B1%D9%81%D8%AA%D9%86-%D8%AF%D9%88-%D8%A8%D8%B9%D8%AF%DB%8C-player-%D8%AF%D8%B1-%DB%8C%D9%88%D9%86%DB%8C%D8%AA%DB%8C-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-Easy-touch-version-3-%D8%B3%DB%8C%D8%B4%D8%A7%D8%B1%D9%BE


دانلود پکیج کامل و تست شده ی کنترل فریک برای تاچ کامل اندروید به همراه آموزش PDF فارسی:
http://gameover.blog.ir/1395/08/07/%D8%AF%D8%A7%D9%86%D9%84%D9%88%D8%AF-%D9%BE%DA%A9%DB%8C%D8%AC-%DA%A9%D8%A7%D9%85%D9%84-%D9%88-%D8%AA%D8%B3%D8%AA-%D8%B4%D8%AF%D9%87-%DB%8C-%DA%A9%D9%86%D8%AA%D8%B1%D9%84-%D9%81%D8%B1%DB%8C%DA%A9-%D8%A8%D8%B1%D8%A7%DB%8C-%D8%AA%D8%A7%DA%86-%DA%A9%D8%A7%D9%85%D9%84-%D8%A7%D9%86%D8%AF%D8%B1%D9%88%DB%8C%D8%AF-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-%D8%A2%D9%85%D9%88%D8%B2%D8%B4-PDF-%D9%81%D8%A7%D8%B1%D8%B3%DB%8C

۴ نظر موافقین ۰ مخالفین ۰ ۱۱ آبان ۹۴ ، ۰۶:۵۶
مدیرکل
منبع:gameover.blog.ir
استخوان رو انتخاب کنید.
سپس در قسمت armature و display گزینه x-Ray رو فعال کنید.(برای عدم نمایش دوباره غیرفعالش می کنیم):
http://s3.picofile.com/file/8219750200/x_ran_display_bone_with_modelj.jpg
۰ نظر موافقین ۰ مخالفین ۰ ۰۷ آبان ۹۴ ، ۰۲:۳۳
مدیرکل
۱ نظر موافقین ۰ مخالفین ۰ ۰۴ آبان ۹۴ ، ۱۲:۵۱
مدیرکل
منبع:gameover.blog.ir

با تشکر از سجاد
با این کد می تونید با کلید shift چپ و راست رنگ پس زمینه دوربین رو عوض کنید.(در اینجا زرد. چون red=1 و green=1 و blue=0 است. بر حسب سیستم RGBA . یعنی اول شدت رنگ قرمز و سپس سبز و سپس آبی رو میدیم و بعدش اگه اشتباه نکنم آلفا یا شدت)


//change camera Background Color
// press Left or Rihgt shift
//csharp language
//unity 5.1final
//Author:Sajjad3011
using UnityEngine;
using System.Collections;

public class cameraBackgroundColor : MonoBehaviour {
    private Camera cam;
    private     Vector4 color1;
    // Use this for initialization
    void Start () {
    
        color1= Camera.main.backgroundColor;
    }
    
    // Update is called once per frame
    void Update () {
        if (Input.GetKey (KeyCode.LeftShift) || Input.GetKey (KeyCode.RightShift)) 
        {
            Camera.main.backgroundColor=new Vector4(1F, 1f, 0, 0.1f);//Red,Green,Blue,Alpha
        }
        else
            Camera.main.backgroundColor=color1;
    }
}

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

منبع:gameover.blog.ir

--

how to check animation is compelete in unity

how to check animation finihed in unity5

-

کد cs:

private IEnumerator WaitForAnimation ( Animation animation )
    {
        do
        {
            yield return null;
        } while ( animation.isPlaying );
    }

کد js:

function WaitForAnimation ( Animation animation )
    {
        yield; while ( animation.isPlaying ) yield;
    }

منبع:

http://answers.unity3d.com/questions/37411/how-can-i-wait-for-an-animation-to-complete.html

مثال بعدی:

function Die ()
 {
 animation.Play("die");
 yield WaitForSeconds (animation["die"].length);
 Destroy(this.gameObject); //destroys the object after animation ended
 }
animation["die"].length   میاد طول زمانی انیمیشنی به اسم die(مردن) رو بر حسب ثانیه در میاره.
yield WaitForSeconds می گه به تعداد ثانیه های ورودی صبر کن.
دستور بعدی هم میاد گیم ابجکت رو نابود می کنه.
-
حالا کل اون کد رو گذاشتیم توی یک تابع که به زبون سیشارپ اینطوری میشه:
کد :
void Die ()
 {
 
animation.Play("die");
 
yield WaitForSeconds (animation["die"].length);
ادامه ی کد

 

شرط می ذاریم مثلا وقتی تیر برخورد کرد به هدف، تابع Die() اجرا بشه.
والسلام.
۱ نظر موافقین ۰ مخالفین ۰ ۰۲ آبان ۹۴ ، ۲۰:۲۵
مدیرکل

منبع:gameover.blog.ir

این یک کلیپ آموزشی که برای شما ساختیم:

http://www.mediafire.com/file/jdywgx70f07s3nh/mp4_ui_button_click_go_level.zip


توی یونیتی 5.1 در hierarchy راست کلیک کن و create->ui->canvas رو بزن تا یک مستطیل ایجاد بشه. جابجاشم کنی فرقی نداره به جای صفحه ی اصلی موبایل جاساز میشه.

حالا می تونی button رو به همون طریق ایجاد کنی و بذاری روش: create->ui->button
بعدش تکستچر دکمه رو توی inspector عوض کن . خصوصیت شناور بودن هم می تونی تنظیم کنی (چپ چین و راست چین و ....)
اگه می خوای واسه کلیکش هم کد بنویسی ابتدا انتخابش کن بعدش توی inspector یک دکمه ی + مثبت هست اونو بزن یک فیلد اضافه میشه. گیم ابجکتی که می خوای رو بکش بنداز روش.
حالا می تونی تابع دلخواهی که داخل اسکریپت های اون گیم ابجکت وجود داره رو از لیست انتخاب کنی برای اجرا.
اینم ببینید:
http://answers.unity3d.com/questions/922045/unity-5-ui-button-onclick.html

+

http://answers.unity3d.com/questions/942622/how-do-you-call-a-function-with-a-button-unity-5-u.html




چند نکته :(زبان سیشارپ)

* برای کد نویسی هم می تونید public Button رو تعریف کنید و دکمه ها رو بکشید بندازید روشون.

* ضمنا باید فاضی نام using UnityEngine.UI رو هم در قسمت بالایی بیارید.

* کد نویسی هم توی تابع Start() باید باشه.

مثال :

یک دکمه برای خروج بسازید و اسکریپت زیر رو بدید به یک گیم ابجکت (مثال canvas) سپس دکمه رو بکشید بندازید روی متغیر btnExit :
using UnityEngine;
using UnityEngine.UI;
using System.Collections;
public class Move : MonoBehaviour {
	public Button btnExit;

	void Start ()
	{

		btnExit.onClick.AddListener(()=>{
			Application.Quit();

		});

}


نکته:
کامپوننت event system هم اگه نیاز شد باید اختصاص بدید بهش(با زدن دکمه Add component و تایپ event system و انتخاب از لیست)
برای کدنویسی رویداد ها(مثل نگه داشتن کلیک یا .....) باید اسکریپتی بنویسید که یک تابع از نوع public void مثلا داشته باشه.

 سپس یک Event Trigger component به دکمه اضافه کنیم (با زدن دکمه ی component در inspector بعد از انتخاب دکمه در hierarchy)، و add new event type رو می زنیم و نوع رویدادی که می خوایم کد رو اختصاص بدیم بهش از لیست انتخاب می کنیم مثل pointerClick ، مثل Drag یا غیره.

مثلا ما Drag رو انتخاب می کنیم.

 بعدش روی + می زنیم و دکمه رو می کشیم روی None(object) تا معرفی کنیم می خوایم از اسکریپت اختصاص داده بهش استفاده کنیم.



سپس از لیست no function ابتدا اسکریپتی که ساخته بودیم رو پیدا و از زیرشاخش تابعی که به صورت void public توی اسکریپت خودمون تعریف کرده بودیم انتخاب می کنیم(یادتون نره حتما نوع تابع باید از نوع public باشه ویلا توی لیست نمیاد)

http://s6.picofile.com/file/8219224792/ui_trigger_eventj.jpg
-
مثلا می تونید رویداد drag رو انتخاب کنید و یک اسکریپت برای حرکت بسازید و بهش اختصاص بدید:
using UnityEngine;
using System.Collections;

public class test : MonoBehaviour {

	// Use this for initialization
public void move(){
		transform.position = Input.mousePosition;
	}
}


سوالی بود بپرسید.
۱۵ نظر موافقین ۰ مخالفین ۰ ۰۲ آبان ۹۴ ، ۲۰:۱۸
مدیرکل

منبع:gameover.blog.ir

http://s6.picofile.com/file/8218825350/2.gif


به لینک زیر برید و چند ثانیه صبر کنید سپس رد تبلیغ رو بزنید:

http://opizo.com/ID6SKq

۳ نظر موافقین ۰ مخالفین ۰ ۰۲ آبان ۹۴ ، ۰۳:۵۵
مدیرکل

منبع:gameover.blog.ir

با تشکر از سجاد به خاطر ارسال مطلب

موقعی که دارم خروجی apk می گیرم خطای زیر رو میده.این خطا برای چیه ؟

UnityException: Minimum platform required is Android 5.0 (API level 21)
[تصویر: android5_0_api_level_21.jpg]




اون خطاهایی رو که تو داری رو من قبلا با دانلود بعضی ابزارها از اینجا رفع کردم:
http://downloads.puresoftware.org/files/android/
--
الان نمی دوم دقیقا اندروید 5.0 (نه 5.01 نه 5.1 نه ...) رو می خواد api level 21
---
چند تا هم دانلود کردم یکی android-21_r02.zip بود بازش کردم دیدم توش یک پوشه هست به اسم android-5.0.1 و اونم کپی کردم توی پوشه platforms حل نشد.
تو لینکی که دادم پوشه ی platform-tools داره ولی platforms نداره.کلا گیج شدم دارم بازم پوشه ها رو می بینم.
پوشه هایی که توی \android-sdk\platforms می ریزیم داخلشون پوشه های data و images و skins داره یادتون نره.
پوشه هایی هم که توی android-sdk\build-tools می ریزیم داخلشون پوشه های libو renderscript داره .
--
من فکر کنم توی پوشه ی platform باید یه پوشه بریزیم به اسم android-5.0 که توش اون مشخصات که گفتم رو داشته باشه ولی android-5.0 (نه 5.1 نه 5.01 نه ...) رو که مشخصات گفته شده از لحاظ محتوا رو داشته باشه نمی دونم از کجا دانلود کنم.
یه سایتی هم هست اینه :
http://kaopu.so/pan/WINDOWS_TOOLS
روی platform-tools-21-windows.zip رفتم این باز شد :
http://pan.baidu.com/s/1o66xKuu#render-t...Fplatforms
زبونش چینی هست . با گوگل ترجمش کردم اینطوری میشه معنی دانلودش:
کد:
加速下载(推荐)=Acceleration Download (recommended)
---------------------
普通下载=Normal download  این گزینه رو بزنید واسه دانلود
---------------------
买会员享提速特权,下载速度最高 提升200%=Members enjoy the privilege to buy speed, download speeds of up to 200% lift
---------------------
立即提速= Now Speed

حالا فعلا دارم android-21.rar رو از لینک تولید شده می گیرم کپیش کنم توی پوشه platforms ببینم مشکل رفع میشه یا نه.

big grinبالاخره من موفق شدم تمام خطاها رو با اعتماد به خودم رفع کنم خروجی apk بگیرمlaugh

[تصویر: solved_2_android5_0_api_level_21.jpg]

http://promakers.ir/showthread.php?tid=12009

اینم یه آموزش دیگه برای رفع مشکل خروجی اندروید در یونیتی:
http://gameover.blog.ir/1394/09/13/%D8%B1%D9%81%D8%B9-%D9%85%D8%B4%DA%A9%D9%84-android-sdk-windows-%D8%AF%D8%B1-unity
۴ نظر موافقین ۰ مخالفین ۰ ۰۱ آبان ۹۴ ، ۱۸:۱۶
مدیرکل

gameover.blog.ir

دانلود پکیج های طناب دو بعدی و سه بعدی(UltimateRopeEditor+RopeScriptPackage)

(رایگان شد)

به لینک یر برید و پس از چند لحظه انتظار،دکمه رد تبلیغ رو بزنید

http://opizo.com/1GpDCL




RopeScriptPackage برای دو بعدی هست.


اینم آموزش سه بعدی UltimateRope برای ایجاد طاب سه بعدی:
http://s5.picofile.com/file/8284783992/rope3d.jpg

http://s8.picofile.com/file/8274543834/tut_Ultimate_Rope_Editor_1_10_sajjad.rar.html


اینم آموزش دو بعدی پکیج 2d rope system:(حجم:30 مگ کیفیت عالی. زبان اصلی):


http://s9.picofile.com/file/8274528600/ultimateRope.jpg

http://opizo.com/Qhn8Lo



۳ نظر موافقین ۰ مخالفین ۰ ۰۱ آبان ۹۴ ، ۰۵:۱۵
مدیرکل