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

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

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

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

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

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

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

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

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

منبع:gameover.blog.ir

ogg بهتره و باعث میشه مشکلات loop رفع بشه.


۰ نظر موافقین ۰ مخالفین ۰ ۳۰ دی ۹۴ ، ۱۵:۴۳
مدیرکل
منبع:gameover.blog.ir
بعضی اوقات مشکل تبدیل داریم و توی نرم افزاری Format Factory خطای تبدیل میده.
برای اینکار ابتدا فرمت WMA یا MP3 رو به فرمت WAV تبدیل و سپس WAV رو به OGG تبدیل کنید.
۰ نظر موافقین ۰ مخالفین ۰ ۳۰ دی ۹۴ ، ۱۵:۳۹
مدیرکل
منبع:gameover.blog.ir

به لینک زیر رفته و ویندوز مورد نظر رو انتخاب کرده و درایورهای مربوط مادربوردتون رو دانلود کنید.

https://www.asus.com/Notebooks/X502CA/HelpDesk_Download/



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


منبع:gameover.blog.ir

// When the audio component has stopped playing, play otherClip
using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    public AudioClip otherClip;
    AudioSource audio;
    
    void Start() {
    	audio = GetComponent<AudioSource>();
    }
    
    void Update() {
        if (!audio.isPlaying) {
            audio.clip = otherClip;
            audio.Play();
        }
    }
}


روش بعدی:

using UnityEngine;
     using System.Collections;
 
     [RequireComponent(typeof(AudioSource))]

     public class ExampleClass : MonoBehaviour
     {
         public AudioClip engineStartClip;
         public AudioClip engineLoopClip;
         void Start()
         {
             GetComponent<AudioSource> ().loop = true;
             StartCoroutine(playEngineSound());
         }
 
         IEnumerator playEngineSound()
         {
             audio.clip = engineStartClip;
             audio.Play();
             yield return new WaitForSeconds(audio.clip.length);
             audio.clip = engineLoopClip;
             audio.Play();
         }
     }
منبع :
 http://answers.unity3d.com/questions/904981/how-to-play-an-audio-file-after-another-finishes.html
۰ نظر موافقین ۰ مخالفین ۰ ۳۰ دی ۹۴ ، ۰۱:۰۵
مدیرکل

منبع:gameover.blog.ir


مثال:

برای خروج از بازی وقتی روی یک cube کلیک شد بهش این کد رو میدیم:

void OnMouseDown(){
        Application.Quit();
}


مثال: برای باز شدن سایت و مثلا ارسال عدد 9 به فایل get.php:

void OnMouseDown(){
Application.OpenURL("http://example.com/get.php?Scrore=9");
}
۰ نظر موافقین ۰ مخالفین ۰ ۲۹ دی ۹۴ ، ۲۰:۲۵
مدیرکل

منبع:gameover.blog.ir

دشمن: برای بررسی ورود پلیر به محدود دشمن راه های زیادی هست مثل بررسی فاصله با استفاده از تابع Vector2.Distance(a,b) برای دو بعدی و Vector3.Distance برای سه بعدی و .... .

اما روش دیگه استفاده از OnTriggerEnter برای بررسی ورود به محدوده ی ما و همچنین استفاده ازOnTriggerExit(Collider) برای بررسی خروج از ناحیه و انجام عمل دلخواه می باشد.

حالا می تونیم در Inspector به پلیر تگ بدیم (مثل player) و بعد توی کد بگیم به دشمن اگه کسی با تگ player به محدودت وارد شد آتیش بزن یا کار دلخواه رو انجام بده و وقتی از محدودمون خارج شد فلان کار رو انجام بده.


نکته: دقت کنید در حالت دو بعدی از تابع 2d باید استفاده کنید حتما و در حالت سه بعدی هم از تابع سه بعدی.

مثال حالت دو بعدی:

حمله بعد از تشخیص ورود پلیر به محدوده دشمن در حالت دو بعدی:

void OnTriggerEnter2D(Collider2D other) {
		if (other.tag = "player") {
		//attack
		}
	}

عکس العمل بعد از خروج پلیر از محدوده ی دشمن (دو بعدی):


void OnTriggerExit2D(Collider2D other) {
		if (other.tag = "player") {
		//go to idle status
		}
	}
۰ نظر موافقین ۰ مخالفین ۰ ۲۹ دی ۹۴ ، ۱۳:۱۰
مدیرکل


منبع:gameover.blog.ir

GetComponent.<AudioSource> ().Stop();
GetComponent.<AudioSource> ().Play();
۰ نظر موافقین ۰ مخالفین ۰ ۲۵ دی ۹۴ ، ۰۹:۳۳
مدیرکل
منبع :gameover.blog.ir

Rename (or copy) the package to xxxxxxxxxxx.tar.gz then use any compression software that's able to decrompress tar.gz archives.

When you have it decompressed view inside the folders and you'll find files named "metaData" if you view those files with any editor (pretty much any text editor will do) you'll see the Unity version number inside starting at about character position 21

پکیج رو به xxxxxxxxxxx.tar.gz تغییر نام بدید سپس یک نرم افزار فشرده ساز رو که قادر به decmpress(از حالت فشرده خارج کردن) آرشیوهای tar.gz هست استفاده کنید.


بعد از استخراج در داخل پوشه ها فایل هایی به نام metaData پیدا خواهید کرد . اگر این فایل ها رو با یک ویرایشگر متنی باز کنید  شماره ورژن رو در آغاز و کاراکتر تقریبا 21 ام خواهید یافت.
موفق باشید.


http://forum.unity3d.com/threads/check-unity-version-with-which-unitypackage-was-created.225751/
۰ نظر موافقین ۰ مخالفین ۰ ۲۴ دی ۹۴ ، ۲۱:۱۸
مدیرکل

منبع:gameover.blog.ir

قبلا از دستور sleep استفاده میشد . ورودی بر حسب میلی ثانیه بود. هر ثانیه معادل 1000 میلی ثانیه بود و برای اینکه بگیم 3 ثانیه صبر کن بعد برو خط بعدی می گفتیم sleep(3000) اما الان قضه فرق داره هر 30 واحد زمان(چون سرعت پیشرفض روم هست 30 و اگه تغییرش بدیم باید تغییر بدیم کد رو ) برای آلارم معال یک ثانیه هست. پس 3 ثانیه میشه 3*30=90 واحد زمانی.

مثال: پروژه ای در گیم میکر /استادیو بسازید که بعد از 3 ثانیه یک نمونه از object2 روی room ایجاد بشه.

حل:

ابتدا دو ابجکت روی room می ذاریم. object1 و object2

به object1 رویداد create و alarm[0] اضافه کنید و به ترتیب کد های زیر رو برای هر بخش نسبت بدید:

//رویداد ایجاد شی یک
seconds=3
alarm[0]=room_speed*seconds



//رویداد آلارم صفر
instance_create(10,10,object2);

دقت کنید به کد و توضیحاتی که دادم.

اینم فایل sample:


اما قاعده ی کلی:
به جای اون 30 بهترین کار اینه که از room_speed استفاده کنیم که متغیر تعریف شده هست و سرعت روم رو تغییر هم بدیم خودش میشناسه.
فرمول کلی هم اینه سرعت روم ضرب در تعداد ثانیه. مثال:
alarm[0]=room_speed*3 باعث میشه بعد از 3 ثانیه  آلارم صفر اجرا بشه.

مثال کلی :
seconds=3
instance_deactivate_all(self); alarm[0]=seconds*room_speed;//This will un-pause the game in the amount of time you selected
در مثال بالا دستور اول همه ی موجودیت ها رو غیر فعال می کنه به جز self یعنی خود گیم ابجکت فعلی رو .
وقتی همه چیز غیر فعال شد بعدش آلارم صفر رو اجرا می کنه بعد از تعداد ثانیه ای هایی که در متغیر seconds می ریزیم.(متغیر seconds دلخواه هست و در اینجا عدد 3 رو بهش دادیم)



منابع:

http://docs.yoyogames.com/source/dadiospice/002_reference/objects%20and%20instances/instances/deactivating%20instances/instance_deactivate_all.html

http://gmc.yoyogames.com/index.php?showtopic=554091

۱ نظر موافقین ۰ مخالفین ۰ ۲۴ دی ۹۴ ، ۱۴:۵۸
مدیرکل
بعد از کلیک روی لینک زیر اندکی صبر کنید تا تبلیغ رد بشه و رد تبلیغ رو بزنید :

http://opizo.com/9QR6Q2


۰ نظر موافقین ۰ مخالفین ۰ ۲۲ دی ۹۴ ، ۲۲:۰۶
مدیرکل
منبع:gameover.blog.ir
void Start () {
		GameObject plane = GameObject.CreatePrimitive(PrimitiveType.Plane);
		GameObject cube = GameObject.CreatePrimitive(PrimitiveType.Cube);
		cube.transform.position = new Vector3(0, 0.5F, 0);
		GameObject sphere = GameObject.CreatePrimitive(PrimitiveType.Sphere);
		sphere.transform.position = new Vector3(0, 1.5F, 0);
		GameObject capsule = GameObject.CreatePrimitive(PrimitiveType.Capsule);
		capsule.transform.position = new Vector3(2, 1, 0);
		GameObject cylinder = GameObject.CreatePrimitive(PrimitiveType.Cylinder);
		cylinder.transform.position = new Vector3(-2, 1, 0);	
	}

۰ نظر موافقین ۰ مخالفین ۰ ۲۲ دی ۹۴ ، ۱۴:۳۲
مدیرکل
منبع:gameover.blog.ir
زبان:انگلیسی
https://encrypted-tbn2.gstatic.com/images?q=tbn:ANd9GcQT-5OpZsFAbjUbWK9xq_Lh15_04A5r6DD-1BTkz-3Y5_bQKUE5

این کتاب واقعا کمیاب هست و وقت روی برنامه نویسی سیشارپ روی یونیتی بحث می کنه و از اول تا آخر به کدنویسی می پردازه.

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

تعداد صفحه: 686
ابتدا روی لینک زیر کلیک کنید.14 ثانیه صبر کنید تا تبلیغ رو ببینید. بعدش دکمه ی سبز رد تبلیغ رو بزنید تا به لینک مستقیم مدیافایلر فایل هدایت بشید.

نکته
: حجم این کتاب بعد از آنزیپ  120 مگ میشه.
zip شده فقط 40 مگ برای دانلود:


اینم ترجمه  قسمت های مهم از 400 صفحه اول اون به صورت فیلم های فارسی:
http://opizo.com/I6Jf2x

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

منبع:gameover.blog.ir

مساحت مثلث= قاعده ضرب در ارتفاع تقسیم به دو

دو text box بذارید روی فرمتون  که قاعده و ارتفاه رو بشه توش وارد کرد.
 یک دکمه بذارید روی فرم و روش دوبار کلیک کنید و این رو در رخداد کلیک بنویسی
val(text1.text)*val(text2.text

http://s6.picofile.com/file/8232890234/masahat.jpg

سورس:

http://s7.picofile.com/file/8232890292/masahat_moalas_vb6.zip.html

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

منبع:gameover.blog.ir

http://etutorials.org/shared/images/tutorials/tutorial_154/03fig01.gif

مادولاسیون  هم یعنی تبدیل دیجیتال به آنالوگ (چون رایانه باینتری رو می فهمه ولی سیم تلفن آنالوگ رو می فهمه  این مدولیتور میاد صفر و یک رو تبدیل به سینوس می کنه. یعنی مربعی به سینوسی) و وقتی به مقصد رسید دوباره تبدیل می کنه به دیجیتال که اونجا دی ماژوله میشه که بهش می گیم دی-مدولاسیون

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

منبع:gameover.blog.ir


پاسخ :MAU = Multistation Access Unit  یعنی واحد دسترسی چند ایستگاهی

http://flylib.com/books/4/153/1/html/2/files/02fig05.jpg

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

DCPromo

این دستور تقریبا مخفف Domain Controller Promoter هست و برای نصب active directory در تنظیمات شبکه در ویندوز سرور بکار می ره که توی منوی Run یا خط فرمان می نویسیم.(در ویندوز 7 یا ویندوزهای غیرسرور کار نمی کنه)
اکتیو دایرکتوری هم ابزاری هست که کل امکانات توی اونه. و اونجا مثلا یوزر ها و گروپ ها رو ایجاد و پرمیژن ها رو تنظیم می کنیم و الی آخر.
البته توی ویندوزهای سرور 2000 و 2003 کار می ده و در ویندوز سرور 2008 به بالا از طریق Server Manager  اجراش می کنیم.
بقیه هم به عهده ی تحقیق شما در گوگل.موفق باشید.
۰ نظر موافقین ۰ مخالفین ۰ ۲۰ دی ۹۴ ، ۱۵:۰۱
مدیرکل
۰ نظر موافقین ۰ مخالفین ۰ ۲۰ دی ۹۴ ، ۱۴:۱۵
مدیرکل
منبع:gameover.blog.ir
http://answers.unity3d.com/questions/813752/is-there-any-way-to-save-a-variable-into-a-txt-fil.html
using UnityEngine;
 using UnityEngine.UI;
 using System.Collections;
 using System.IO;
 public class BestScore2 : MonoBehaviour {
 public Text textBestScore; // you dont need this
 
     void Start () {
         string t = "your text";
         string path = "Builds/FormulaOne_Data/BestScore.txt";
         System.IO.File.WriteAllText (@path, t); // for writing
         string text = System.IO.File.ReadAllText(@path); // for reading
         textBestScore.text = text;  // you dont need this
     }
 
 
 } 

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

منبع:gameover.blog.ir

uses crt;
var i:integer;
var sum:double;
var strTemp:string;
var myArray : Array[1..30] of Integer;
BEGIN
for i:=1 to 30 do begin
Str(i,strTemp);
write("num(" + strTemp + ") : " );ReadLn(myArray[i]);
sum:=sum+myArray[i];
end;
write(sum div 30);
END.
۱ نظر موافقین ۰ مخالفین ۰ ۱۹ دی ۹۴ ، ۱۵:۵۷
مدیرکل

منبع:gameover.blog.ir

اینم 30 تا PDF فارسی از کتابی که مدتها قبل و حدود 10 سال پیش تو بازار خریده بود داداشم :

http://s5.picofile.com/file/8126131742/openGL.jpg


فهرست مطالب :

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

نکته:اولا این کتاب خیلی کمیاب هست و حتی توی سایت های خارجی هم بسیار نادر هست ولی ما این کتاب رو به رایگان براتون می ذاریم تا دانلود بفرمایید.

تعداد صفحه: نزدیک 800 


نکته ی مهم : افراد عادی که با انجین های بازی سازی unity کار نکردن یا کلا قصد ساخت بازی (چه دو بعدی چه سه بعدی) رو دارن نیازی به این کتاب نیست و باید اول بدون درگیر شدن با جزئیات،برن مستقیم با یونیتی کار کنن .



چون در openGL فقط کارهای گرافیک رو انجام میدیم تحت Visual c ++ و خروجی اندروید و غیره هم در کار نیست.(و الان هم واسه عهد بوقه و شما بهتره برید سمت unity)، یه خروجی صرفا EXE می سازیم که کتابخانه ها و فایل های DLL و Lib یا ... رو به محیط ویژوال استادیو add reference و تیک می زنیم و فایل dll رو در c:\windows\system32 میریزیم و lib رو هم در پوشه ی include و الی آخر... .

این کتاب برای زمانی هست که شما حرفه ای یونیتی یا انیجن های دیگه می شید.بین انجین های دیگه مثل cry یا unreal و unity و game maker studio (خود گیم میکر منسوخ هست و حتما استادیو خروجی اندروید میده) و OGRE و torque 3d و  S2Engine HD  هم هم خودتون مختارید با چی کار کنید. اما بنده توصیه ام اینه که شروع کارتون با unity باشه بعدش حالا خواستید برید سمت انجین های دیگه تا تست کنید و خودتون تشخیص بدید برتری های یونیتی رو. فقط فیزیک یونتیی کمی توی قسمت Rigid body و سرعت های بالا ممکنه ضعیف عمل کنه که اونا رو باید با تکنیک پیاده سازی کرد و شاید آنریل توی سیستم های فیزیک قوی تر باشه.اما باز هم شروع کار یونیتی از نظر ما.


بعد از تسلط به یونیتی و شروع بازی سازی،اونجایی که دوست دارید مطالعات آزاد تری رو در زمینه ی کدنویسی سخت تر با open GL انجام بدید(هر چند منسوخ هست) فقط به صرف اینکه ایده های ساخت انجین های بازی سازی رو درک کنید می تونید از کتب openGL مثل این و سایر کتب و directX و .... کمک بگیرد.(فرق open GL هم با directX اینه که openGL از توابع بیشتری استفاده می کنه و اشیای سه بعدی و ترسیمات texture و فایل های عکس و انداخت اونا روی مدل و shader ها(متریال های روی مدل ها) و نورپردازی ها و سایه گذاری ها و به طور کلی فقط کار گرافیک رو انجام میده و با صدا و سایر جنبه ها کاری نداره.(مباحث دیگه مثل openAL یا Cross Platform 3D Audio مربوط به صدا) و Directx هم جزو برنامه نویسی های حرفه ای تر هست که مستقیما با سحت افزار درگیر می شید و اونجا برای حرفه ای ها هست که دوست دارن کدهاشون با سرعت بیشتری بدون تبدیلات اضافه به فرمت اجرایی روی سیستم عامل ویندوز در بیاد و الی آخر...)

این شما و این یکی از بهترین کتاب های openGL (فقط حرفه ای ها مطالعه کنن و مبتدیان سعی کنید درگیر جزئیات این کتاب نشید که چطوری بازی بسازیم و از کجا شروع کنیم.اگه سوالی در رابطه با بازی سازی دارید در وبلاگ نظر بدید بنده ی حقیر راهنماییتون خواهم کرد انشاءا... . چون خودم مدت ها سر در گم بودم و چندین سال در این باب تحقیق کردم و البته باز هم بی سواد هستم در برابر اساتید و تمام شما بزرگواران. .و من ا... توفیق):


http://pxhst.co/avaxhome/ad/ac/0014acad_medium.jpeg

http://opizo.com/yrsFmQ

۱ نظر موافقین ۰ مخالفین ۰ ۱۹ دی ۹۴ ، ۱۱:۴۸
مدیرکل
منبع:gameover.blog.ir
این کد بسیار کمیاب هست و بهترین کدی بود که براتون قرار میدیم:
نمایش فایل bmp:
ابتدا تابع LoadBitmapFile رو کدنویسی می کنیم:
۰ نظر موافقین ۰ مخالفین ۰ ۱۹ دی ۹۴ ، ۱۰:۲۰
مدیرکل

منبع:gameover.blog.ir

ذخیره مرحله بازی در یونیتی 5:
۷ نظر موافقین ۰ مخالفین ۰ ۱۸ دی ۹۴ ، ۱۴:۰۱
مدیرکل

منبع:gameover.blog.ir

از منوی Edit زیرمنوی Render settings رو انتخاب کنید و گزینه ی Fog رو در پنل باز شده در کادر inspector فعال کنید و تنظیمات مثل رنگ و شدت و غیره رو دستکاری کنید:

http://s5.picofile.com/file/8130506150/fog_unit.jpg


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

منبع:gameover.blog.ir


using UnityEngine;
using System.Collections;
//Smooth camera for 2d platforms
//Author:Sajjad3011
//unity 5
public class camera2d : MonoBehaviour {
    public Transform target;
    private float smooth=1f;
    void FixedUpdate () {
        transform.position = Vector3.Lerp(transform.position, target.position, smooth * Time.deltaTime)-new Vector3(0,0,0.4f);
    }
}
نکته: طبق کد حتما باید توی FixedUpdate کار کنید. اگه توی Update بذارید صحنه لرزش پیدا کرده یا پرک پرک می زنه.

طبق کد ما از متد یا تابع Lerp برای حرکت نرم دوربین بین دو نقطه شروع (پوزیشن فعلی دوربین) و پایان(پوزیشن player) استفاده کردیم و سرعت حرکت هم در پارامتر smooth انجام دادیم و در تایم ضرب کردیم. smooth به معنی فاکتور نرمی هست و اگه زیادش کنیم سرعت حرکت بیشتر خواهد بود.

وکتور 3 هم که ایجاد کردیم برای این بود که موقعیت دقیقا می افتاد روی پلیر و زوم میشد روش و ما به اندازه ی 0.4 در واحد float از محور z کم کردیم تا فاصله بگیره و عقب بره ولی توی بردار x و y همون هست و هیچی ازش کم نکردیم .


روش دوم :
using UnityEngine;
using System.Collections;

public class SmoothFollow2D : MonoBehaviour {

 private Vector3 velocity = Vector3.zero;
 public Transform target;
 
 // Update is called once per frame
 void Update () 
 {
  if (target)
  {
   Vector3 point = GetComponent<Camera>().WorldToViewportPoint(target.position);
   Vector3 delta = target.position - GetComponent<Camera>().ViewportToWorldPoint(new Vector3(0.2f, 0.5f, point.z)); //(new Vector3(0.5, 0.5, point.z));
   Vector3 destination = transform.position + delta;
   transform.position = Vector3.SmoothDamp(transform.position, destination, ref velocity, 0);
  }
  
 }

}

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

منبع:gameover.blog.ir

یه متغیر پابلیک از نوع AudioSource تعریف کرده بعدش با کد خصوصیت volume رو مساوی value از scrollBar ات کنید. (مقدار حداقل باید 0.0 و حداکثر باید 1.0 باشه که نوع float هست)
-
برای اینکه واسه رویداد change از slider bar کد بنویسید توی inspector یک مثبت (+) هست روش بزنید تا رویداد change رو ایجاد کنه.


همونجا توی کادری که نوشته None باید گیم ابجکت Audio source رو بکشی رها کنید توش تا یک گیم ابجکت دلخواه که اسکریپت audiosource رو بهش نسبت خواهیم داد.

سپس از لیست no function اسکریپت رو انتخاب و از زیر شاخش تابعی که می خواید با حرکت نوار لغزان(slider) اجرا بشه رو انتخاب می کنیم.

یادتون نره تابع حتما باید از نوع public تعریف شده باشه ویلا توی این بخش نمیاد.

http://s6.picofile.com/file/8232048800/audioSource_sliderChange.jpg

اسکریپت هم شبیه این می تونه باشه :

public Slider mainSlider;
public AudioSource as;
mainSlider.minValue =0;
mainSlider.maxValue=1;

public void changeVolume(){
as.Volume=mainSlider.Value;
}


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

منبع:gameover.blog.ir


یکی از این روش ها رو امتحان کنید  :


Object یا World از طریق منوی Symmetry


Ctrl + Shift + right-click

یا

q + click در صحنه

در Tool Box روی Select tool یا یکی لاز ابزارهای transformation دابل کلیک سپس Object یا World رو از بخش Symmetry Settings در پنجره ی Tool Settings انتخاب کن.


در Modeling Toolkit یکی از گزینه های Object یا World رو از طریق لیست کشویی Symmetry انتخاب کن.
۱ نظر موافقین ۰ مخالفین ۰ ۱۳ دی ۹۴ ، ۰۵:۱۸
مدیرکل

منبع:gameover.blog.ir

http://www.mediafire.com/download/re9k885kapwhvs8/CustomHiScoreStudio.zip


HiscoreNew.png


http://software4me.org/dload/files/tutorials/CustomHiScoreStudio.zip


منبع:

http://gmc.yoyogames.com/index.php?showtopic=533357

http://docs.yoyogames.com/source/dadiospice/002_reference/social%20gaming/achievements%20and%20leaderboards/local%20high%20scores/index.html

۱ نظر موافقین ۰ مخالفین ۰ ۱۳ دی ۹۴ ، ۰۴:۴۱
مدیرکل
منبع:gameover.blog.ir
گزینه ی interactable رو غیر فعال کنید.(البته قبلش دستگیره یا handle رو حذف کنید)
۰ نظر موافقین ۰ مخالفین ۰ ۱۳ دی ۹۴ ، ۰۳:۳۲
مدیرکل

منبع:gameover.blog.ir

public Sprite spr1;
GetComponent<Image>().sprite =spr1;
۱ نظر موافقین ۰ مخالفین ۰ ۱۲ دی ۹۴ ، ۱۹:۴۵
مدیرکل

منبع:gameover.blog.ir

ابتدا slice tool رو از کادر ابزار یا toolBox انتخاب می کنیم(سومی رو)
سپس روش دوبار کلیک می کنیم کادری باز میشه و شروع و طول width رو عدد می دیم (مثلا 0 تا 250 یا 250 تا 500 و ایل آخر) بعدش ok.
سپس روی برش دوم دوبار کلیک و الی آخر:

http://s5.picofile.com/file/8130386142/slice_tool.jpg

در نهایت می تونید با ابزار select بخش های اندازه گیری شده رو انتخاب و cut کنید و توی سند جدیدی که باز کردید جداگانه ذخیره کنید.


روش بهتر:

البته یک گزینه دیگه هم داره: راست کلیک کنید روی عکس و Divide Slice و دو تا تیک رو بزنید.

مثلا اولی: به صورت افقی 4 قسمت کنه. عدد رو 4 می دیم.

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

منبع:gameover.blog.ir

http://poopinmymouth.com/process/workflow/workflow_01.gif


    alt + e = extrude
    alt + r = ring select
    alt + l = loop select
    z = center viewport on selection
    f3 = toggle wireframe (tapping this twice will return you from another viewtype to normal view)
    1 = vertices (in edit poly mode)
    2 = edges (in edit poly mode)
    3 = open edges (edges along a hole in a mesh) (in edit poly mode)
    4 = faces (in edit poly mode)
    5 = sub-elements (connected chunks of triangles) (in edit poly mode)
    6 = exit sub-object mode (in edit poly mode)
    The modification keys W movement, E scale R rotate.
    The viewport keys L left, B bottom, F front, P perspective. (I assign ctrl + L to right view, and ctrl + B to back view)
    v = viewport pop-up menu, and from there you can use hotkeys to get the different views.
    when in a sub object mode like vertices, hold ctrl and click on another sub object mode like faces, to convert your selection. Hold ctrl+shift to only get the the sub objects contained completely by the current selection.

http://poopinmymouth.com/tutorial/workflow.htm

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

منبع:gameover.blog.ir

http://poopinmymouth.com/process/tips/dirt.jpg

توضیح:

اغلب اوقات ما یک مدل رو می سازیم و یادمون میره بهش جزئیات بدیم.

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

سوالی بود از نحوه ی uv map یا غیره بپرسید.

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

http://www.vray-materials.de


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

http://www.1001freefonts.com/



۰ نظر موافقین ۰ مخالفین ۰ ۱۱ دی ۹۴ ، ۱۱:۵۲
مدیرکل
منبع:gameover.blog.ir
bool forward = true;
         private Animator anim;
         
         void Start ()
         {
             anim = GetComponent<Animator>();
     
         }
         
         void Update ()
         {
             if (Input.GetMouseButtonDown (0)) {
                 if (forward){
     
                     anim.Play("firstAnimation");
     
                 } else {
     
                     anim.Play("secondAnimation_R");
     
                 }
                 forward = !forward;
             }
         }

http://answers.unity3d.com/storage/temp/26159-screen+shot1.png


روش دو:
gameObject1.animation["اسم انمیشن"].speed = -1;
 gameObject1.animation["اسم انیمیشن"].time = gameObject1.animation["اسم انیمیشن"].length;
 gameObject1.animation.Play("اسم انیمیشن");

۰ نظر موافقین ۰ مخالفین ۰ ۱۱ دی ۹۴ ، ۱۰:۱۲
مدیرکل
منبع:gameover.blog.ir
سازنده:sajjad3011
این سورس مربوط به android studio v 1.5 هست.
روی گوشی بذارید و با اجراش موقعیت طول (Longitude) و عرض(Latiitude) جغرافیایی(Geography )

http://www.mediafire.com/download/jwarbmnatamlz0k/GPS.zip


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

منبع:gameover.blog.ir

داده های نوع static همیشه آخرین مقداری رو که بهشون می دیم تو کل برنامه یا تو کل بازی حفظ می کنن و دیگه صفر نمیشه مگه اینکه خودمون مقدارشو صفر  یا تغییر بدیم.


اگر یک متغیر final (نهایی) یک مرجع به یک ابجکت را نگه دارد،آنگاه وضعیت آبجکت ممکن است بوسیله ی عملیاتی روی ابجکت تغییر کند،اما متغیر همیشه به همان ابجکت رجوع می کند.این همچنین با آرایه ها بکار می رود.زیرا آرایه ها اشیا هستند.

اگر یک متغیر final یک رجوع به یک آرایه داشته باشد،آنگاه اجزای آرایه ممکن است است به وسیله ی عملیات روی آرایه تغییر کنند.،اما متغیر همیشه به همان آرایه مراجعه خواهد کرد.


کلاس های final :

یک کلاس نهایی، نمی تواند subclass شود.این حالت باعث ایجاد امنیت و مزایای موثری می شود.بنابراین تعدادی از کلاس های استانارد Java نهایی(final) هستند.مثل java.lang.System و java.lang.String . همه ی متدها در کلاس فاینال، final ضمنی هستند.

مثال :

public final class MyFinalClass {...}
public class ThisIsWrong extends MyFinalClass {...} // forbidden


sub class های محود اغلب به کلاس های "soft final" نامیده می شوند.

متدهای final:

یک method فاینال نمی تواند به وسیله ی sub class ها ovveride یا hidden شود.این به دلیل جلوگیری از رفتار غیر منتظره ی یک subclass (یا کلاس فرزند) برای تغییر متدی بکار می رود که ممکن است برای function یا استکام کلاس حیاتی باشد.

مثال:

public class Base
{
    public       void m1() {...}
    public final void m2() {...}

    public static       void m3() {...}
    public static final void m4() {...}
}

public class Derived extends Base
{
    public void m1() {...}  // Ok, overriding Base#m1()
    public void m2() {...}  // forbidden

    public static void m3() {...}  // OK, hiding Base#m3()
    public static void m4() {...}  // forbidden
}
یک تصور غلط عمومی این است که تعریف یک کلاس یا متد به عنوان کلاس final با اجازه به کامپایلر بهره وری را افزایش می دهد تا به طور مستقیم متد را در جاییکه فراخوانی یا call می شود درج کند.(اینجا رو بخونید: https://en.wikipedia.org/wiki/Inline_expansion) اما از آنجا که متد در لحظه ی اجرا لود می شود، کامپایلر ها قادر به اجرای این نیستند. فقط محیط اجرایی و کامپایلر JIT جی آی تی (https://en.wikipedia.org/wiki/Just-in-time_compilation) دقیقا می داند کدام کلاس لود شده است و فقط آنها می توانند در مورد زمان inline بودن تصمیم بگیرند خواه متد ،نهایی(final) باشد یا نباشد.

کامپایلرهای کد ماشین،که مستقیما کد اجرایی را تولید می کنند(platform-specific machine code) یک استثنا هستند. موقع استفاده از static linking (توضیحات بیشتر https://en.wikipedia.org/wiki/Static_linking ) کامپایلر می تواند به طور امن فرض کند که متدها و متغیرها در زمان کامپایل می توانند inline شوند.

Final variables:
یک متغیر فاینال از طریق یک initializer یا یک عبارت اختصاصی می تواند یکبار فراخوانی شود .نیاز نیست که در لحظه ی تعریف ، initialize شود: این یک متغیر "blank final" نامیده میشود. یک متغیر blank final instance از کلاس باید قطعا در هر constructor (سازنده)(یک کلاس همنام کلاس در خود کلاس) در جاییکه تعریف می شود اختصاص بیابد . در غیر اینصورت یک خطای زمان کامپایل در هر دو حالت رخ می دهد.(نکته: اگر متغیر یک رفرنس باشد این به این معنی است که متغیر نمی تواند بار دیگر به رفرنس ابجکت دیگری محدود شود.اما شی ای که آن رجوع می کند هنوز تغییر پذیر یا mutable است اگر هنوز به طور اصلی قابل تغییر باشد: https://en.wikipedia.org/wiki/Mutable_object)

بر خلاف مقدار یک constant(ثابت) ،مقدار متغیر نهایی (final) نیاز نیست در زمان کامپایل شناخته شود . این شیوه ی خوبی برای نمایش ثابت های final با حروف تمام بزرگ(uppercase) می باشد(به همراه خط زیر یا underline برای جداسازی کلمات)

مثال:
public class Sphere {

    // pi is a universal constant, about as constant as anything can be.
    public static final double PI = 3.141592653589793;

    public final double radius;
    public final double xPos;
    public final double yPos;
    public final double zPos;

    Sphere(double x, double y, double z, double r) {
         radius = r;
         xPos = x;
         yPos = y;
         zPos = z;
    }

    [...]
}
هر تلاشی برای اختصاص مجدد شعاع، xPos،yPos، یا zPos منجر به یک خطای کامپایلری خواهد شد.در واقع حتی اگر constructor(سازنده ی کلاس) یک متغیر نهایی را تنظیم نکند تلاش برای تنظیم آن در خارج از سازنده ی کلاس منجر به خطای کامپایلری می شود.

برای آنکه نشان دهیم finality تغییر ناپذیری را تضمین نمی کند:فرض کنید که ما سه متغیر موقعیت را با یکی نشان دهیم:
public final Position pos;
که pos شامل pos.x و pos.y و pos.z هست. pos نمی تونه اخصاص داده بشه اما سه خصوصیت اون می تونن مقداردهی بشن مگر اینکه اونا خودشون نهایی باشن.مثل تغییرناپذیری کامل( https://en.wikipedia.org/wiki/Immutability) استفاده از مزایای زیادی داره مخصوصا در بهینه سازی(optimization) . برای نمونه، Sphere احتمالا یک حجم بازگشتی (function returning its volume) خواهد داشت. اگه بدونیم شعاع ثابت هست به ما اجازه می ده تا حجم محاسبه شده رو در حافظه ذخیره کنیم. اگر ما Spheres های نسبتا کمی داشته باشیم و ما اغلب حجم آنها را نیاز داریم افزایش عملکرد ممکن است قابل توجه باشد. ساخت یک Sphere final به توسعه دهندگان و کامپایلرها اطلاع می دهد که انواع بهینه سازی در تمام کدی که از Sphere ها استفاده می کنند ممکن است. هر چند به نظر میرسد که اصل final نقض شده است عبارت زیر قانونی است :
for (final SomeObject obj : someList) {
   // do something with obj
}
از آنجا که متغیر obj با هر بار تکرار در حلقه از حوزه خارج می شود واقعا با هر تکرار مجددا تعریف می شود.
ترجمه:sajjad3011
مطالعه ی بیشتر:

https://en.wikipedia.org/wiki/Final_%28Java%29#cite_note-2
اینم یه منبع فارسی دیگه:
http://www.tahlildadeh.com/ArticleDetails/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-java-%D8%A7%D9%86%D9%88%D8%A7%D8%B9-%D9%85%D8%AA%D8%BA%DB%8C%D8%B1%D9%87%D8%A7%DB%8C-%D8%AC%D8%A7%D9%88%D8%A7

نکته بعدی: متغیرهای static متغیرهایی هستن که آخرین مقداری رو که بهشون می دیم همیشه حفظ می کنن.

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

کمک در فهم پلاگین jar عدد برای یونیتی
این سایت عدد اعصابمو به هم ریخته. چون اصلا داکیومنت هاش کامل و واضح نیست. مشکل اصلی اینه که ما جاوا کار حرفه ای نیستیم و داکیومنت یونیتی هم کامل نیست و خیلی ترو تمیز درس ندادن.ما هم بچه شهرستانیم امکانات رفتن به کلاس های حرفه ای برامون فراهم نبود.لطفا اگه کسی می دونه راهنمایی کنه.

من فایل adad-client-3.2.jar سایت عدد که واسه تبلیغات برای یونیتی نوشته بودن رو بیرون ریختم.
اما باید کمک بدید ببینیم ازش چیزی می تونیم سر در بیاریم یا نه.

این سورسی که از فایل jar کشیدم بیرون واسه تمام فایلهای جاواشه :

http://s3.picofile.com/file/8230624650/adad_client_3_2_jar_source_from_JADX.zip.html

لطفا دانلود کنید و ببینید سر در میارید یا نه.
یه بخش token هم داره.
ببینید اینو میشه دستکاری کرد و با روشی دیگه یک پلاگین تبلیغات دیگه ساخت ؟depressed

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

منبع:gameover.blog.ir

یک گیم ابجکت روی صحنه بذارید.

یک اسکریپت بسازید مثل این و بدید به گیم ابجکت.

//test.cs
//Author:Sajjad3011
//Drag ui->text using Drag Event
using
UnityEngine; using System.Collections; using UnityEngine.UI; public class test : MonoBehaviour { public Text text1; public void funcDrag(){ transform.position = new Vector3(Input.mousePosition.x, Input.mousePosition.y, 0); } }

کامپوننت Event trigger بدید بهش.

روی Add new event بزنید تا یک رویداد انتخاب کنید(شما باید در اینجا Drag رو انتخاب کنید. اگه دوست داشتید کلیک باشه PointerClick و ...)

ابجکتی که اسکریپت رو بهش دادید بکشید روی event trigger و رویدادی که ایجاد کردید.(اگه نوشته بود list empty یعنی لیست خالی هست اولش باید روی + پایینی کلیک بشه تا یک لیست بیاد براتون که بتونید گیم ابجکت رو بکشید روش)

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

http://s3.picofile.com/file/8230468534/drag.jpg

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

منبع:gameover.blog.ir


[تصویر: screenOrientation.jpg]
برای اینکار باید Screen.orientation رو با مقادیر کلاس ScreenOrientation تنظیم کنیم.
مقادیر:

Variables
Portrait	Portrait orientation.
PortraitUpsideDown	Portrait orientation, upside down.
LandscapeLeft	Landscape orientation, counter-clockwise from the portrait orientation.
LandscapeRight	Landscape orientation, clockwise from the portrait orientation.
AutoRotation	Auto-rotates the screen as necessary toward any of the enabled orientations.


مثال :


// Start in landscape mode
    function Start () {
        Screen.orientation = ScreenOrientation.LandscapeLeft;
    }

منبع :help یونیتی
۴ نظر موافقین ۰ مخالفین ۰ ۰۸ دی ۹۴ ، ۱۰:۵۲
مدیرکل

منبع:gameover.blog.ir

یک ui->text روی صحنه بذارید (جایی که دید کافی داشته باشه)
در inspector خصوصیت پاراگراف (Paragraph ->Alignment رو برای حالت افقی و عمودی روی center) و overflow (سرریز) افقی(horizontal) وعمودی(vetical) رو روی overflow بذارید تا اگه متن بزرگتر شد کادر متن به اندازه اون بشه.

یک اسکریپ بسازید و توش یک تابع مثل func1 بنویسید و حتما از نوع public باشه. بعدش روی دکمه ی Add component بزنید و Event Trigger بدید به ui->text ایجاد شده روی صحنه و سپس ابجکتی که اسکریپت test رو بهش دادید بکشید روش و رویداد pointerClick رو انتخاب و تابع func1() رو از زیر شاخه ی اسکریپت test در همون لیست بهش ربط بدید تا قتی کلیک می کنیم روش تابع func1 اجرا بشه.

using UnityEngine;
using System.Collections;
using UnityEngine.UI;
public class test : MonoBehaviour {
    public Text text1;
    void Start () {
        text1.text = "salam";
    }

    public void func1(){
        text1.text = "clicked";
}
}

http://s6.picofile.com/file/8230461234/change_ui_text.jpg

اجرا:

http://s3.picofile.com/file/8230461834/clicked.jpg

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

منبع:gameover.blog.ir

در یونیتی 5 بعضی اوقات وقتی در پنجره ی build settings روی andoid  سوئیچ می کنیم و پروژه رو به apk بیلد می کنیم همچنان می بینیم روی گوشی نصب نمیشه(مثل گوشی huawei یا ....) و با خطایی مثل این مواجه میشیم:

application not installed android unity


برای رفع این مشکل به قسمت File->Build Settings رفته و روی android رفته و switch platform  رو بزنید. چند لحظه صبر کنید . سپس player settings رو بزنید و تنظیمات زیر رو وارد کنید.

Device Fil_t_e_r = FAT(AR Mv 7+x 86)
Install Location = Automatic

bundle identifier رو هم درست وارد کنید برای مثال : ir.esmeSherkat.esmeApp

http://s6.picofile.com/file/8230303092/application_not_installed_android.jpg


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

منبع :gameover.blog.ir

نویسنده:sajjad3011
منابع:سایت یونیتی + سایت اندروید + منابع سیشارپ + ... .

این آموزش خیلی مهم و واقعا کاربردی هست.به خیلی از منابع سر زدم و خیلی تحقیق کردم تا درک کنم این مبحث رو.
حالا نتیجه ی تحقیقاتم رو به رایگان در اختیار همه ی دوستان می ذارم تا به نوبه ی خودم بتونم کمکی هرچند ناچیز کرده باشم برای پیشرفت دوستان.

کلاس جاوای اندروید در یونیتی نمایشی از یک موجودیت جنریک از java.lang.Class هست.(مبحث پیچیده هست اما زمانیکه با سورس هایی در سایت adad.ir یا غیره مواجه میشید اینا بهتون کمک می کنه تا موضوع تبلیغات از طریق ساخت این کلاس رو بهتر درک کنید.اگه هم سخته نگران نباشید جلوتر شاید بهش برسیم)

توضیح:
کلاس AndroidJavaClass از کلاس AndroidJavaObject مشتق میشه(یعنی خصوصیات AndroidJavaObject رو به ارث می بره.مثل توابع و متغیرها و ...)


اگه بخوام به زبون قابل فهم یادتون بدم یعنی دسترسی به کتابخانه ای که به زبان جاوا برای اندروید نوشته شده. مثال می زنم: سایت عدد (adad.ir) یا سایت های دیگه مثل بازار و غیره رو دیدید که میان پلاگین های اندرویدی با پسوند jar(یا java archive) به شما می دن می گن توی unity اضافه کنید بعدش فلان دستورات رو بکار بگیرید تا بتونید با استفاده از اونا توی دستگاه های اندرویدی تبلیغات برنامه نویسی شده توی اون کتابخونه jar رو استفاده کنید؟

این دقیقا همونه که با مثال یادتون میدم تا بهتر درک کنید که چه قدرت هایی درش نهفته هست.مثل همون DLL نویسی که توی سیشارپ می نوشتیم و توی یونیتی ازش استفاده می کردیم. این فرقش اینه که با eclipse یا android studio یا ... کتابخونه های جاوا رو برنامه نویسی کردن(یا خودمون هم اگه بخوایم می تونیم) بعدش به jar بیلد کردن و به یونیتی اضافه می کنن. حالا روش استفاده اش رو یاد می گیریم.

توابع این کلاس عبارتند از:

Call فراخوانی یک متد جاوا روی یک ابجکت (غیر استاتیک).
CallStatic فراخوانی یک متد استاتیک جاوا روی یک کلاس.
Dispose کل بک کردن IDisposable .(اگه فراموشم نشده باشه کل بک یعنی یک تابع رو به ورودی تابع دیگه بدیم)
Get دریافت مقدار یک فیلد در یک ابجکت(غیر استاتیک).
GetRawClass بازیابی اشاره گر jclass خام به کلاس جاوا.
GetRawObject بازیابی اشاره گر jobject خام به شی جاوا.
GetStatic دریافت مقدار یک فیلد استاتیک در نوع شی.
Set تنظیم مقدار یک فیلد در یک شی (غیر استاتیک).
SetStatic تنظیم مقدار یک فیلد استاتیک در نوع شی.

شکل کلی یا پوتوتایپ این کلاس به این صورت هست :

public AndroidJavaClass(string className);

اسم کلاسی از اندروید رو که میخوایم استفاده کنیم به صورت رشته ای(string) به ورودیش معرفی می کنیم.

مثال:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        AndroidJavaClass jc = new AndroidJavaClass("java.lang.System");// Try to collect som Java garbage..
        jc.CallStatic("gc");
    }
}



در مثال فوق یک نمونه از کلاس java.lang.System به نام jc ساختیم . gc مخفف garbage collector یا جمع کننده ی زباله هست.
یعنی قسمت های اشغالی حافظه رو از داده های موقت و بی استفاده پاک سازی و آزاد می کنه.

مثال بعدی:


using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        AndroidJavaClass jc = new AndroidJavaClass("android.os.Build"); // Retrieve the manufacturer of the product/hardware.
        string manufacturer = jc.Get<string>("MANUFACTURER");
    }
}

در این مثال با استفاده از کلاس اندروید android.os.Build اطلاعات سخت افزاری کارخانه ی سازنده ی دستگاه رو باز یابی و در متغیر رشته ای manufacturer ذخیره کردیم.

کل کلاس های اندرویدی جاوا رو میخواید بلد شید نیاز به حفظ نیست به این لینک سر بزنید :
http://developer.android.com/reference/classes.html
مثلا خصوصیات همین کلاس anroid.os.Build اینجا اومده:
http://developer.android.com/reference/android/os/Build.html
مثال :
Build.VERSION که ورژن سیستم عامل نصب شده ی اندروید روی گوشی رو به صورت رشته ای نشون میده.
Build.VERSION_CODES که کد شمارشی کدهای ورژن SDK رو بر می گردونه .
و الی آخر... .

کلاس AndroidJavaObject :
شکل کلی:
public AndroidJavaObject(string className, params object[] args);
className اسم کلاس
args آرایه ای از آرگومان ها یا پارامترهای ورودی به کانستراکتور(کلاس سازنده)
با این کلاس یک ابجکت اندروید رو مورد استفاده قرار می دیم.
مثال:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        AndroidJavaObject jo = new AndroidJavaObject("java.lang.String", "some string");
    }
}
در مثال فوق یک شی جاوا اندروید با قابلیت ذخیره رشته ایجاد کردیم.

مثال بعدی:

using UnityEngine;
using System.Collections;

public class ExampleClass : MonoBehaviour {
    void Start() {
        int width = 300;
        int height = 150;
        AndroidJavaObject jo = new AndroidJavaObject("android/view/ViewGroup$LayoutParams", width, height);
    }
}
در مثال فوق عدد 300 و 150 رو به پارامترهای width و height از لی اوت(layout یا فرم اپلیکیشن اندرویدی) پاس کردیم که باعث میشه پهنا و ارتفاع لی اوت مون تنظیم بشه(برای درک لی اوت هم کافیه شما برنامه نویسی با b4a یا android studio یا eclipse رو بلد باشید تا مفهوم رو بهتر درک کنید)

امیدوارم کلیات رو درک کرده باشید.

حالا پلاگین عدد(adad.ir) اومده خودش یک کتابخونه ی اختصاصی نوشته و با دستور زیر ازش داره استفاده می کنه . مثلا تبلیغات رو اینطوری حذف می کنه :
AndroidJavaClass pluginClass = new AndroidJavaClass("ir.adad.AdadUnityPlugin");
pluginClass.CallStatic("setDisabled", new object[1] {"true"});
یک مدل از کلاس ir.adad.AdadUnityPlugin می سازه با نام pluginClass و سپس متد setDisabled رو با آرایه ای تک عضوی object با مقدار true مقدار میده. به همین سادگی با اندروید ارتباط می گیره و تبلیغات خودش رو به صورت توکار حذف می کنه.


من فقط اشاره کردم و هنوز خیلی مطالب برای یادگیری هست. توضیحات بیشتر انشاءا... باشه به حساب مطالعات آزاد شما.
کلاس AndroidJavaObject در یونیتی 5 قسمت 2 :

قبلا با دستور زیر در یونتی 5 آشنا شدیم :
AndroidJavaObject jo = new AndroidJavaObject("android/view/ViewGroup$LayoutParams", width, height);

اما سوال:
این استاندارد از کجا اومد و چطوری ما attribute یا خصوصیت های LayoutParams رو بدست آوردیم و از کجا فهمیدیم مسیر android/view/ViewGroup.LayoutParams.html هست.
پاسخ:
تمامی استاناردهای اندروید در سایت اندروید به آدرس http://developer.android.com/reference/ موجود هست.
مثال :

http://developer.android.com/reference/android/view/ViewGroup.LayoutParams.html

نکته:
احتمالا سایت شیلتر باشه. شما با قند شکن بازش کنید.
۱ نظر موافقین ۰ مخالفین ۰ ۰۷ دی ۹۴ ، ۱۱:۱۷
مدیرکل

منبع : gameover.blog.ir

بعضی وقتا از این موردا پیش میاد. scene(صحنه) رو حذف و دوباره ایجاد کنید. mono editor رو هم بندید و اسکریپت دیگه ای ایجاد کنید بعد از چند لحظه مشکل حل میشه. موفق باشید.

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

http://s3.picofile.com/file/8230104834/dllClass_make.jpg


به لینک زیر برید و چند ثانیه صبر کرده پس رد تبلیغ رو بزنید:
نکته برای unzip حتما باید برنامه 7Zip داشته باشید.(آموزش رو هم با fireFox باز کنید)

http://opizo.com/LjL6yJ

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

نویسنده:sajjad3011

این آموزش برای visual studio 2012 هست.
ابتدا شما باید پلاگین  mysql plugin visual studio 1.1.1.msi رو از این لینک بگیرید و برای ویژوال استادیو نصب کنید.


اگه شیلتر بود با قند شکن باز کنید:
https://cdn.mysql.com/Downloads/MySQLInstaller/mysql-visualstudio-plugin-1.1.1.msi
8.3 مگابایت هست.

اگه قند شکن ندارید نگران نباشید روی مدیافایر براتون آپلود کردم:
http://www.mediafire.com/download/el5n0lwxf1xgcw5/mysql-visualstudio-plugin-1.1.1.msi

دانلود نصبش کنید.

سپس visual studio 2012 رو باز کنید.

یک پروژه Windows form application بسازید.

در کادر splution explorer(کادر درختی اجزای پروژه) راست کلیک کرده و Add reference (افزودن کتابخانه)رو بزنید و در قسمت Extensions (افزونه ها) mysql.Data رو تیک بزنید و ok کنید تا بتونید برای mysql کدنویسی کنید.

سپس یک button روی فرم بذارید و در کادر Properties خصوصیت Text اون رو بذارید Connect to mySQL.
روی این button دوبار کلیک کرده و کد زیر رو برای کلیک اون قرار بدید:
MySql.Data.MySqlClient.MySqlConnection conn;
            string myConnectionString;

            myConnectionString = "server=127.0.0.1;uid=root;" +
                "pwd=;database=database1;";

            try
            {
                conn = new MySql.Data.MySqlClient.MySqlConnection();
                conn.ConnectionString = myConnectionString;
                conn.Open();
                MessageBox.Show("Connected to host");
            }
            catch (MySql.Data.MySqlClient.MySqlException ex)
            {
                MessageBox.Show(ex.Message);
            }

یادتون نره حتما در قسمت بالای برنامه این دستور رو بذارید :
using MySql.Data.MySqlClient;

نکته :

همچنین یک برنامه برای ساخت دیتابیس mysql باید روی سیستم محلی داشته باشید(اگه هم ندارید می تونید روی یک سایت آنلاین که php و mySQL رو ساپورت می کنه در قسمت mysql و phpmyAdmin یک دیتابیس بسازید و ip یا آدرس اتصال به سرور mysql رو از سایت کپی کنید به همراه نام کاربری و رمز عبور اختصاصی به دیتابیس آنلاین و ببرید توی سیشارپ)

اگه اینترنت ندارید همون برنامه ی xampp رو نصب و اجرا کرده و سرویس های mySQL و apache رو run کنید. سپس مرورگر fireFox رو باز کرده و به آدرس http://localhost و سپس به بخش phpmyAdmin برید و یک دیتابیس به نام database1 بسازید.
http://s3.picofile.com/file/8230092442/xampp_create_db_phpMyAdmin.jpg


یوزر پیشفرض root هست و رمز نداره کهخ توی کدبالا آوردیمش. server یا mysql host   هم در اینجا روی سیستم محلی هست که ip(آی پی) اش 127.0.0.1 هست که به جاش localhost هم می تونستیم بذاریم.

با F5 اجرا بگیرید و روی دکمه کلیک کنید . اگه بتونه وصل بشه پیام میده Connected و اگرنه خطای لازم رو نشون میده.


http://s3.picofile.com/file/8230092918/connect2mySQL_in_vs2012_csh.jpg
موفق باشید.


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

منبع:gameover.blog.ir

بای اینکار باید با پهنا و ارتفاع view بازی کنیم.

مثال :

رویداد Step:


if distance_to_object(obj_player)<=30 //////or put the whatever you want
{
view_hview[0]=360//////360 is the zoom out height
view_wview[0]=360//////360 is the zoom out width
}


if distance_to_object(obj_player)>=30
{
view_hview[0]=320/////set it back again to it's default
view_wview[0]=320/////set it back again to it's default
}

توضیحات بیشتر:
http://gmc.yoyogames.com/index.php?showtopic=510479
۰ نظر موافقین ۰ مخالفین ۰ ۰۶ دی ۹۴ ، ۰۱:۴۸
مدیرکل

منبع:gameover.blog.ir

http://s3.picofile.com/file/8230078684/ocean_animation.jpg

بعضی اوقات نیاز دارید یک gif بسازید تا از فریم هاش در گیم میکر استادیو یا ... استفاده کنید.

البته برای یونیتی خودش سیستم ساخت فیزیک آب رو داره و به این نیاز نیست.

بلندر رو باز کنید.

shift+A بزنید و یک Plane رو Add کنید به صحنه.(ماوس دقیقا باید توی صحنه باشه تا عمل کنه)

و یک مدیفایر اقیانوس (ocean modifier) اضافه کنید.(نکته: ما فرض کردیم شما قبلا آموزشای بلندر رو بلدید. اگه بلد نیستید و چیزای مبتدی رو می خواید بگید تا لینک آموزش رو معرفی کنیم)

روی فریم 0 رفته و time از ocean رو روی 0 بذارید. و وقتی ماوس روشه i بزنید تا این فریم روی زمان  ثبت بشه(i به مغنی insert هست)

روی فریم آخر برید  و زمان رو روی 25 گذاشته و i بزنید تا فیزیک روی اون زمان ثبت بشه.


برای uv map و انداختن تکستچر اقیانوس هم می تویند توی صحنه tab بزنید و به Edit mode رفته و سپس u زده و unwrap کنید و سپس به uv edit رفته و یک تکستچر آب رو open image و uv map کنید.

اینم تکستچر آب: http://www.digitaltoolsforarchitects.com/wp-content/uploads/2013/02/sea-map.jpg


سپس ماوس رو روی صحنه برده و alt+A بزنید تا انیمیشن Play بشه.

نکته : یادتون نره یک لامپ خورشید(Sun lamp) بندازید روی آب تا بهتر دیده بشه تکستچر.

موفق باشید


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

منبع:gameover.blog.ir

اگر دیدید کاراکتر به هوا میره پارامتر Apply Root Motion رو برای کامپوننت Animator غیر فعال کنید.

بعضی اوقات معمولا کاراکتر حالت float in air(معلق یا شناور در هوا)پیدا می کنه.


برای حل این مشکل،خصوصیات is kinematic از Rigidbody و apply root motion از animator رو غیر فعال کنیم(توی Animator و Rigid body)

http://s3.picofile.com/file/8188091142/Apply_Root_Motion.jpg

نکته ی مهم دوم:
بعضی وقتا کلید بالا رو می زنیم کاراکتر نمی پره و تمام موارد فوق رو هم رعایت کردیم. در این حالت باید به کلایدر (Collider) هایی که در inspector به کاراکتر دادیم نگاه کنیم. در حقیقت بعضی اوقات علاوه بر اینکه به اجزای بدن یک کاراکتر تک تک میایم و polygon collider یا edge collider   می دیم علاوه بر اون باید به خود گیم ابجکت empy والد،یک کلایدر بدیم که مثل یک مستطیل دقیقا زیر پاهای کاراکتر باشه تا به هر طریقی کاراکتر حرکت کنه کج نشه یا یه جوری پاهاش از این کلایدر پایین تر نره(باید Edit کنید)



is kinematic یکی از خصوصیات RigidBody هست که به وسیله ی آن می توانیم کاراکتر را کنترل physic engine خارج کنیم و اگر نیاز به حرکت کاراکتر داریم با trasform آن را حرکت دهیم.
۱ نظر موافقین ۰ مخالفین ۰ ۰۵ دی ۹۴ ، ۱۱:۳۳
مدیرکل

منبع:gameover.blog.ir

http://s6.picofile.com/file/8229729568/shib.jpg

الان گیم میکر منسوخ هست و گیم میکر استادیو و یونیتی معمول تره. اما بازم این سورس رو برای شما میذاریم.

http://s6.picofile.com/file/8229729576/shib.gm81.html

۰ نظر موافقین ۰ مخالفین ۰ ۰۴ دی ۹۴ ، ۰۶:۲۰
مدیرکل
منبع : gameover.blog.ir
نویسنده:sajjad3011
تغییر image یک panel روی canvas در یونتیی 5 با استفاده از کد سیشارپ :
یک ui->canvas و سپس یک ui->panel روی اون ایجاد کنید(اسم پنل رو بذارید Panel1 )
اسکریپت زیر رو به کانواس یا پنل ربط بدید و یک عکس رو بکشید روی متغیر background در قسمت اسکریپت ربط داده در inspector:
//changePanelImage.Cs
//Author:Sajjad3011
//Change image of panel
using UnityEngine;
using UnityEngine.UI;
using System.Collections;

public class changePanelImage : MonoBehaviour {
    public Sprite background;
    // Use this for initialization
    void Start () {
        GameObject.Find ("Panel1").GetComponent<Image> ().sprite = background;
    }
    
    // Update is called once per frame

دقت کنید که حتما باید فضای نام using UnityEngine.UI; رو در بالای برنامه بیارید تا کتابخونه ی UI رو لینک کنه وگرنه دستور GetComponent<Image> ().sprite رو شناسایی نمی کنه.
http://s3.picofile.com/file/8229729284/changeImageOfPanel.jpg

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

منبع : gameover.blog.ir

ریسپانسیو کردن یو آی در یونیتی
هماهنگ شدن آیتم های واسط کاربری با رزولوشن های مختلف
اجرای ui روی resolution های مختلف گوشی های مختلف در یونیتی 5

برای این کار یک ui->canvas ایجاد کنید و سپس چند ui-button بذارید روش .
سپس پارامتر ها رو به صورت زیر تنظیم کنید:
ui scale mode=scale with screen size
scale match mode=Match width or Height
Mathc = اندازه ای که توی پنجره ی game بتونید تمام اجزا رو با رزولوشن دلخواه ببینید.

http://s3.picofile.com/file/8229723492/canvasScaler_RunOEveryResolution_unity5.jpg
۱ نظر موافقین ۱ مخالفین ۰ ۰۴ دی ۹۴ ، ۰۲:۵۱
مدیرکل
واسه کنترل ماشین car controller scripts زیاد ریحته. می گیری میندازی روی ماشین و بعدش wheel collider میدی به چرخ ها و شعاع اونا رو مساوی شعاع چرخ ها میدی و سعی می کنی دقیقا روی لاستیک ها و در مرکز اونا باشه.
بعدش یکی دو تا collider میدی به ماشین (مثل یک sphere collider در سطح دایره ای شکل بالای ماشین و یک کالیدر مربعی برای قسمت پایینی ماشین و همینطور یک empty object میذاری در مرکز ماشین وباید اونو به عنوان نقطه مرکز ثقل ماشین توی پارامترهای کنترلت بدی.
-
بقیه چیزا هم جرم mass لاستیک ها هست باید زیاد و کنی و پاراکترهای دیگه مثل اصطکاک و ....
-
یه دونه قبلا aminblog76 گذاشته بود که می تونی ازش استفاده کنی و فقط تنظمشون رو باید دستی کار کنی و اونقدر جلو عقب کنی تا درست در بیاد و ماشن توی سرعت بالا چپه نکنه یا ملق نزنه و از این حرفا.
بیشتر به دونستن پارامتر ها و یکم کار کردن و وقت گذشتن بیشتر هست.
-
بیشتر واسه زمانبر بودن و ایده ی تکراری هست که دنبالش نمی رم.
-
من اول تصمیم دارم علم بازی سازی رو خودمون بدست بیاریم یکم و بعدش با تکنیک های جانبی و ترو تمیز تر نظر بدیم و بسته بندی و کپسوله کنیم کارها رو و به صورت پکیج در کنار هم بذاریم خیلی راحت و منظم.
-
همه چیز رو پاک کن و از اول یه سورس تمیز رو پیدا کن بعدش ببین ان چیکار کرده و درک کن و واسه کدها توضیحات بذار و بعدش توی inspector ببین پارامتر های car controller و wheel collider ها چیه. اونا رو دونه دونه معنی کن.

http://opizo.com/Zf57yX


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

منبع:
http://promakers.ir/showthread.php?tid=6879&page=2
۰ نظر موافقین ۰ مخالفین ۰ ۰۳ دی ۹۴ ، ۰۶:۰۹
مدیرکل

منبع:gameover.blog.ir

فرض کنید یک کره یا sphere داریم که شعاع اون 6000 باشه.
حالا فرض کنید بخوایم نقطه ی روی زمین واقعی رو که از GPS خوندیم حالا می خوایم تبدیل به مختصات نقطه ی سه بعدی روی این کره کنیم.

کدش شبیه این میشه:

// this gives you a point on a spehere
 const float kRadiusOfEarth = 6000;
 Vector3 pos = new Quaternion(lat, long, 0) * new Vector3(0, 0, kRadiusOfEarth + altitude);


http://answers.unity3d.com/questions/1011674/gps-coordinates-latlongaltitude-to-unity-3d-coordi.html

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