#اسکریپت دریافت اطلاعات تاچ هایی که صورت گرفته شده در #یونیتی
دوستان در کلاس Input تابعی به نام GetTouch هست که بهش index میدید مثلا 0 و صفرمین تاچی ک شده رو بهتون میده 0 توی ارایه همون 1 خودمون هست.
حالا این تابع GetTouch میاد کلاس Touch بر میگردودنه و متغیری به اسم phase داره این متغیر enum هستش و 5 مقدار Began , Moved , Ended , Stationary , Canceled داره که دو تا آخری زیاد استفاده نمیشه و 3 تا مقداری که زیاد استفاده میشه این ها هستن و کارشون هم مشخصه :
Began :
🆔 @Unity_Technologies
دوستان در کلاس Input تابعی به نام GetTouch هست که بهش index میدید مثلا 0 و صفرمین تاچی ک شده رو بهتون میده 0 توی ارایه همون 1 خودمون هست.
Touch touch = Input.GetTouch(TOUCH_INDEX)
;حالا این تابع GetTouch میاد کلاس Touch بر میگردودنه و متغیری به اسم phase داره این متغیر enum هستش و 5 مقدار Began , Moved , Ended , Stationary , Canceled داره که دو تا آخری زیاد استفاده نمیشه و 3 تا مقداری که زیاد استفاده میشه این ها هستن و کارشون هم مشخصه :
Began :
if (touch.phase == TouchPhase.Began)
{
Debug.Log("Started - " + touch.position);
}
Moved :if (touch.phase == TouchPhase.Moved)
{
Debug.Log("Moved - " + touch.position);
}
Ended :if (touch.phase == TouchPhase.Ended)
{
Debug.Log("Ended - " + touch.position);
}
اولین شرط موقعی اجرا میشه که تاچ شروع شده باشه و دومی موقعی که حرکت میکنه و سومی موقعی که تموم و برداشته میشه با استفاده از این تابع GetTouch میتونید تاچ هارو بگیرید و کلی کار های جالبی برای بازیتون پیاده سازی کنید با تاچ مثل زوم و حرکت دوربین با تاچ و درگ و..🆔 @Unity_Technologies
#اسکریپت حرکت با محور مجازی در #یونیتی
کلاس Input تابعی به نام GetAxis داره که باهاش میتونید از قسمت Input Manager بیاید و Axes هارو ازش بگیرید مثل Mouse X یا Horizontal و.. که اگه به پنجره ی Project Settings / Input Manager / Axes برید همه ی این Axes ها اونجا هستن و میتونید تغییر بدید و اضافه کنید.
حالا ما Axes های Horizontal, Vertical رو میگیریم که Horizontal موقعی مقدار دهی میشن که کلید های a , d , left , right یک یا چند تاشون فشار داده بشه و Vertical هم w, d , up , down مقدارشون هم از -1 تا 1 هستش که در vertical اگر کلید بالا یا w فشرده بشه مقدار به 1 میرسه و اگر کلید پایین یا s فشرده بشه مقدار به -1 میرسه و horizontal هم a و چپ فشرده بشه مقدار -1 و d و راست هم مقدار به 1 میرسه حالا ما با استفاده از این مقدار ها میایم و پلیر و ابجکتمون رو با استفاده از ترنسرم حرکت میدیم.
برای حرکت دادن با ترنسفرم از تابع Translate از کلاس ترنسفرم استفاده میکنیم:
vertical به معنی عمودی هست اینجا سوال پیش میاد که چرا میدیمش به محور z ؟
چون وقتی ما کلید های w و s رو فشار میدیم باید پلیر به سمت عقب و جلو بره نه بالا و پایین
جهت y بالا و پایین هستش و حالا ممکنه بازی شما دوبعدی یا کلا فرق داشته باشه و بجای جلو و عقب رفتن بالا و پایین میره میتونید جاهاشون رو عوض کنید و هرطور که دوست دارید بنویسیدشون.
🆔 @Unity_Technologies
کلاس Input تابعی به نام GetAxis داره که باهاش میتونید از قسمت Input Manager بیاید و Axes هارو ازش بگیرید مثل Mouse X یا Horizontal و.. که اگه به پنجره ی Project Settings / Input Manager / Axes برید همه ی این Axes ها اونجا هستن و میتونید تغییر بدید و اضافه کنید.
حالا ما Axes های Horizontal, Vertical رو میگیریم که Horizontal موقعی مقدار دهی میشن که کلید های a , d , left , right یک یا چند تاشون فشار داده بشه و Vertical هم w, d , up , down مقدارشون هم از -1 تا 1 هستش که در vertical اگر کلید بالا یا w فشرده بشه مقدار به 1 میرسه و اگر کلید پایین یا s فشرده بشه مقدار به -1 میرسه و horizontal هم a و چپ فشرده بشه مقدار -1 و d و راست هم مقدار به 1 میرسه حالا ما با استفاده از این مقدار ها میایم و پلیر و ابجکتمون رو با استفاده از ترنسرم حرکت میدیم.
برای حرکت دادن با ترنسفرم از تابع Translate از کلاس ترنسفرم استفاده میکنیم:
transform.Translate(POSITION);
...myObject.transform.Translate(POSITION);
به این شکل و پارامتر یا ورودی های این تابع Vector3 و یا 3 متغیر عدد اعشاری x , y , z هستن.transform.Translate(0,1,0);
...myObject.transform.Translate(new Vector3 (0,1,0)));
...Vector3 pos = new Vector3 (0,1,0);
transform.Translate(pos);
حالا ما میایم و axes های horizontal و vertical رو میگیریم و میریزیم داخل متغیر عدد اعشاری :float horizontal = Input.GetAxis("Horizontal");
float vertical = Input.GetAxis("Vertical");
و در تابع ترنسلیت از این متغیر ها استفاده میکنیم و یک vector3 میسازیم ازش :transform.Translate (new Vector3 (horizontal, 0, vertical);
...myObject.transform.Translate (new Vector3 (horizontal, 0, vertical);
افقی یا همون horizontal رو میدیم به x و عمودی یا vertical رو میدیم به z.vertical به معنی عمودی هست اینجا سوال پیش میاد که چرا میدیمش به محور z ؟
چون وقتی ما کلید های w و s رو فشار میدیم باید پلیر به سمت عقب و جلو بره نه بالا و پایین
جهت y بالا و پایین هستش و حالا ممکنه بازی شما دوبعدی یا کلا فرق داشته باشه و بجای جلو و عقب رفتن بالا و پایین میره میتونید جاهاشون رو عوض کنید و هرطور که دوست دارید بنویسیدشون.
🆔 @Unity_Technologies
#اسکرپیت تبدیل string به enum
دوستانه کلاس Enum عین int و float و ... تابعی به نام Parse داره :
دوستانه کلاس Enum عین int و float و ... تابعی به نام Parse داره :
Enum.Parse(...);
که ورودی هاش یک Type و string و bool :public static object Parse (Type enumType, string value, bool ignoreCase);شما یک enum تعریف کردید به شکل زیر :
enum Animalحالا مثلا مقدار رو به صورت متنی داخل یک فایل ذخیره کردید مثلا اون مقدار Cat هست و حالا میخواید این و تبدیل کنید به enum میاید از تابع Parse کلاس Enum استفاده میکنیم و تبدیل به Animal میکنیم و میریزیم داخل متغیر برای مثال :
{
Cat,
Dog,
Parrot,
Turtle
}
Animal animal = (
Animal)Enum.Parse (typeof(
Animal),
"Cat");
تابع میاد به صورت object بر میگردونه پس حتما باید تبدیل به Animal شه و بخاطر همین قبل از فراخونی تابع Animal رو داخل پرانتز قرار دادیم تا تبدیل به این حالت بشه و بریزه داخل متغیر حالا ورودی این تابع یه تایپ همین Animal خودمون رو دادیم این پارامتر مهمه حتما باید بدید و دومین پارامتر هم متنمون که داخل فایل ذخیره کرده بودیم الان میاد مقدار Cat از Animal رو میریزه داخل متغیر به این صورت :Animal animal = Animal.Cat;
🆔 @Unity_Technologiesدانلود #یونیتی 2020 پرو کرک شده نسخه ی 2020.14f (64-bit) فشرده ZIP
حجم: 1.7 گیگابایت
دانلود رایگان
- https://xip.li/ckcRaV
🆔 @Unity_Technologies
حجم: 1.7 گیگابایت
دانلود رایگان
- https://xip.li/ckcRaV
🆔 @Unity_Technologies
Offline #Unity Documentation
Name: UnityDocumentation
Format: ZIP
Size: 300 MB
Download Link
https://storage.googleapis.com/docscloudstorage/2019.4/UnityDocumentation.zip
🆔 @Unity_Technologies
Name: UnityDocumentation
Format: ZIP
Size: 300 MB
Download Link
https://storage.googleapis.com/docscloudstorage/2019.4/UnityDocumentation.zip
🆔 @Unity_Technologies
Forwarded from ʜᴀᴅɪ ʜᴅ
بچه ها یه روش بهینه سازی کد اینه که مثلا شما تو تابع اپدیت یا هر تابع دیگه ای
مثلا کلی شرط دارین میخواین وقتی یکیش اجرا شد دیگه بقیه رو نه چک کنه نه اجرا واسه اینکه دیگه بقیه اجرا نشن از return; استفاده کنید اخر شرطتون بنویسید return;
مثلا :
if (Input.GetKeyDown(KeyCode.A))
{
//ok
return;
}
if (Input.GetKeyUp(KeyCode.A))
{
//ok
return;
}
حالا خب وقتی down بود دیگه up که نیازی نیست چک شه و کلا نه میخواد اجرا بشه نه چیزی پس بیخودیه چک کردنش و بخاطر همین اخر شرط down ریترن میکنیم که دیگه ادامه نده جلو نره
مثلا کلی شرط دارین میخواین وقتی یکیش اجرا شد دیگه بقیه رو نه چک کنه نه اجرا واسه اینکه دیگه بقیه اجرا نشن از return; استفاده کنید اخر شرطتون بنویسید return;
مثلا :
if (Input.GetKeyDown(KeyCode.A))
{
//ok
return;
}
if (Input.GetKeyUp(KeyCode.A))
{
//ok
return;
}
حالا خب وقتی down بود دیگه up که نیازی نیست چک شه و کلا نه میخواد اجرا بشه نه چیزی پس بیخودیه چک کردنش و بخاطر همین اخر شرط down ریترن میکنیم که دیگه ادامه نده جلو نره
کسایی که مشکل autocomplete یا پیشنهادات و .. توی ویژوال استودیو دارن که ادیتور کمکشون نمیکنه تو کدنویسی این ابزار رو دانلود کنن و نصب کنن روی ویژوال استودیو شون و اوکی میشه :
Visual Studio 2015 Tools for Unity
Visual Studio 2013 Tools for Unity
Visual Studio 2012 Tools for Unity
Visual Studio 2010 Tools for Unity
حالا اگه نسخه ی شما بیشتر از 2015 هست همین 2015 رو میتونید نصب کنید مشکلی نیست
اگه اینکار جواب نداد ویژوال استودیو رو حتما باید ریستارت هم کنید اگه باز هم جواب نداد اول ویژوال استودیو رو ببندید برید داخل پروژتون توی یونیتی و کلیک راست کنید روی صفحه ی پروژه و گزینه ی Reimport All رو بزنید و دوباره کد رو با ویژوال استودیو باز کنید.
Visual Studio 2015 Tools for Unity
Visual Studio 2013 Tools for Unity
Visual Studio 2012 Tools for Unity
Visual Studio 2010 Tools for Unity
حالا اگه نسخه ی شما بیشتر از 2015 هست همین 2015 رو میتونید نصب کنید مشکلی نیست
اگه اینکار جواب نداد ویژوال استودیو رو حتما باید ریستارت هم کنید اگه باز هم جواب نداد اول ویژوال استودیو رو ببندید برید داخل پروژتون توی یونیتی و کلیک راست کنید روی صفحه ی پروژه و گزینه ی Reimport All رو بزنید و دوباره کد رو با ویژوال استودیو باز کنید.
کسایی هم که میخوان با ویژوال استودیو شیدر های یونیتی بنویسن از این ابزار ها استفاده کنن :
https://marketplace.visualstudio.com/items?itemName=MarcinODev.ShaderUnitySupport
https://marketplace.visualstudio.com/items?itemName=ShaderlabVS2019.ShaderlabVS
https://marketplace.visualstudio.com/items?itemName=MarcinODev.ShaderUnitySupport
https://marketplace.visualstudio.com/items?itemName=ShaderlabVS2019.ShaderlabVS
Unity Technologies pinned «کسایی که مشکل autocomplete یا پیشنهادات و .. توی ویژوال استودیو دارن که ادیتور کمکشون نمیکنه تو کدنویسی این ابزار رو دانلود کنن و نصب کنن روی ویژوال استودیو شون و اوکی میشه : Visual Studio 2015 Tools for Unity Visual Studio 2013 Tools for Unity Visual Studio…»
کلاس Transform یه متغیر از جنس bool داره به اسم hasChanged موقعی true میشه که ترنسفرم متغیر هاش مثلا position , rotation , scale حالا فرقی نداره کدوم فقط تغییر کنه این متغیر true میشه و باهاش میتونید چک کنید که ترنسفرم تغییر کرده یا نه و مثلا تو بازی های انلاین میتونید استفاده کنید وقتی true بود یعنی تغییر کرده و بیاید پوزیشن و روتیشن رو بفرستید به سرور و..
دوستان این متغیر false شدنش به عهده شماست و بعد اینکه true شد کاراتونو کردید باید false کنیدش و دوباره خودش موقع تغییر true میشه و..
مثال :
دوستان این متغیر false شدنش به عهده شماست و بعد اینکه true شد کاراتونو کردید باید false کنیدش و دوباره خودش موقع تغییر true میشه و..
مثال :
if (transform.hasChanged)مثال دوم :
{
Debug.Log ("has changed");
transform.hasChanged = false;
}
public Transform t;🆔 @Unity_Technologies
if (t.hasChanged)
{
Debug.Log ("has changed");
t.hasChanged = false;
}