pycharm نرم افزاری از jetbrain هست واسه کدنویسی پایتون.
gameover.blog.ir
سازنده:مهدی+سجاد
این جلسه اسکریپت به شما برنامه نویسی way point آموزش داده میشه به طوری که می تونید به سرعت یاد بگیرید خودتون برنامه ای بنویسید تا در محیط ویرایش قبل از runTime یعنی محیط Scene Editor با استفاده از توابع Draw بین اشیای مختلف خط ارتباط ترسیم کنید تا بهتر از طراحی های خودتون مخصوصا در بازی های مهندسی شده استفاده کنید. کیفیت آموزش عالی هست و هر مشکلی بود توی وبلاگ ما و گروه تلگرام پاسخگو خواهیم بود انشاءا... .
gameover.blog.ir
کد روشن و خاموش کردن چراغ/روشن و خاموش کردن لامپ/خاموش و روشن کردن چراغ/خاموش و روشن کردن لامپ:
public GameObject lamp;
برای کلیک دکمه ی دلخواه این کد رو بذارید که هر بار not می کنه (علامت تعجب ! به معنی نات یا معکوس کردن از true به false یا بلعکس می باشد):
target.SetActive(!target.activeSelf);
gameover.blog.ir
تگ یا Tag عنی برچسب یا اسم مستعار.
توی html ما قبلا به چند تا ابجکت id می دادیم که ثابت بود و هر ابجکت یه
اسم ثابت داشت نمی تونستیم تغییرش بدیم ولی می تونستیم یه کلاس یا class
تعریف کنیم و همه ی ابجکت های لخواه رو از نوع اون کلاس تعریف کنیم یا
برچسب بزنیم. بعدش که میخواستیم تغییراتی روی اون ابجکت ها ایجاد کنیم دیگه
دستی اینکار سخت بود. کافی بود اسم اون کلاس رو داشته باشیم و خصوصیاتشو
دستکاری کنیم یا بهشون دستیابی داشته باشیم.
توی html چیزی بود تو مایه های tagByName یا tagByID که بهش ایدی میدادیم و
خودش همه رو لیست می کرد بعدش میریختیم توی ارایه و با یه حلقه ی تکرار به
کل ابجکت های ریخته شده توی ارایه دسترسی داشتیم و یه سری عملیات کلی روی
اونا انجام میدادیم.
توی unity یه چیز توی همون مایه ها هست یبه اسم tag.
مثلا من سه تا دوربین دارم:
cam1
cam2
cam3
--
به هر سه تاشون برچسب cam می زنم
بعدش با کدی مثل این همشون رو غیر فعال می کنم:
//Disable all cameras with tag 'cam' var cameras = GameObject.FindGameObjectsWithTag("cam"); for (var cams : GameObject in cameras) { cams.GetComponent(Camera).enabled = false; }بعدش با کد دوربین رو فعال می کنم:
منبع:gameover.blog.ir
http://www.mediafire.com/download/ur2egvx855irm9e/soldier_ArmyPilot-20Animation.7z
نکته :
باید حتما برنامه 7zip رو داشته باشید برای اینکه فایل فشرده شده با پسوند 7z هست.
gameover.blog.ir
بعد از چند ثانیه رد تبلیغ رو بزنید(حجم 14 کیلو بایت )
Bouncy.physicmaterial فیزیک ماده فنر
Collision_Material.physicMaterial فیزیک ماده ی تصادم یا برخورد
Ice.physicmaterial فیزیک ماده یخ
Metal.physicmaterial فیزیک آهن
Rubber.physicmaterial فیزیک لاستیک
Vehicle.physicMaterial فیزیک وسیله نقطه
Wood.physicmaterial فیزیک چوب
منبع:gameover.blog.ir
عکس گرفتن از صفحه گوشی اندروید
برای اینکار کلید Volume down و Power رو با هم چند لحظه نگه دارید:
منبع:gameover.blog.ir
وکتور 4 پارامتر چهارم هست.
ما بردار 5 بعدی و .... هم داریم.
مثل آرایه ای که چند مقدار می گیره.
حالا اگه سه باشه بهش می گیم بردار سه بعدی.
اگه چهار باشه برای موارد خاص بکار می ره.
مثلا رنگ
Red
Green
Blue
اون آخری هم آلفا یا شفافیت نور.
بقیه رو بدو دوست من.
gameover.blog.ir
توی وبلاگ سعی می کنم مطالب رو از هیچ جایی نگیرم جز خود سایت یونیتی.
شکل زیر رو ببینید تکمیله نیاز به دیدن فیلم و ... هم نیست که این همه سایت سرگردون می کنه آدمو.
قسمت هایی که مکعب مستطیلی هست.اون نواحی فقط رندر میشه.(رندر به معنی اینه که پرداش بیشتری برای سایه زنی و .... انجام میشه نه اینکه اون بیرونی ها دیده نشن. اونا یه جوری مثل عکس یا حالت از پیش رندر شده دارن و پردازش اضافه نمیشن و مصرف بهینه میشه)
وب پیج رو zip کردم بعد از آنزیپ با فایرفاکس باز کنید. موفق باشید
Sub Globals Dim p As PhoneIntents End Sub Sub Activity_Create(FirstTime As Boolean) 'Do not forget to load the layout file created with the visual designer. For example: Activity.LoadLayout("Layout1") StartActivity(p.OpenBrowser("http://www.basic4ppc.com")) End Sub
منبع:gameover.blog.ir
Sprite spr1=Resources.Load<Sprite>("sprites/newSprite");//load Assets/Resources/sprites/newSprite.png GetComponent<SpriteRenderer> ().sprite = spr1;
نکته بسیار مهم:
پسوند فایل رو نباید توی کد قرار بدید.
همچنین مسیر باید اسلش داشته باشه. بک اسلش کار نمی کنه.طبق هلپ یونیتی.
نکته مهم بعدی:
مسیر فایل sprites/newSprite.png باید حتما در زیر شاخه ی زیر باشه حتما:
Assets/Resources
Rigidbody2D body2d; body2d = GetComponent<Rigidbody2D> (); if (condition) { body2d.constraints = RigidbodyConstraints2D.FreezePositionX; } else { body2d.constraints = RigidbodyConstraints2D.None; }
ابتدا خط فرمان رو رات کلیک کرده و run as administrator اجرا کنید.
این دستور رو اجرا بگیرید:
sfc /scannow
صبر کنید تا عملیات تمام بشه.
اگه مشکل حل نشد.این کارها رو هم انجام بدید:
msert رو از اینجا دانلود کنید:
http://www.microsoft.com/security/scanner/en-us/default.aspx
ابزار MicrosoftFixit.Devices.Run رو هم از این لینک بگیرید:
شلیک سینوسی در فضای سه بعدی به سمت هدفی که در روبروی ما قرار دارد
اگه می خوای دقیق و به صورت دایره ای و هوشمند بزنی به هدف:
اولا باید فاصله خودتو تا هدف محاسبه کنی
این با تابع Distance بدست میاد.
بعدش با معادله ی دایره،فیثاغوریث یا توابع مثلثات میزنی به هدف.
فرمولشم اینه:
X2=R*Cos(teta)+x1 y2=R*Sin(teta)+y1
در سه بعدی اگه بخوای به جلو بره این میشه:
به جای X1,Y1 مختصات دو بعد از گیم ابجکت گلوله رو باید بدی به طوری که رو به جلو باشه یعنی Z به جای X1 و Y هم به جای Y1 .
X2,Y2 رو بعدش بده تیر .
تتا رو از صفر تا 180 مقدار میدی
به R هم فاصله نقطه ایجاد تیر تانک تا هدف رو میدی.
مثلا یک حلقه while یا تایمر بنویس که تتا teta رو از منفی 90 تا مثبت 90 درجه دونه دونه زیاد کنه.
بعدش می گی:
//sajjad3011 teta=-90; float distance = Vector3.Distance(transform.position,hadaf.position); midz = distance / 2; while(teta<+90) { teta++; deltaZ=radius*cos((teta*3.14)/180); deltaY=radius*sin((teta*3.14)/180); z=z+midz+deltaZ; y=y+deltaY; position=new Vector3(this.position.x,y,z)//be x dast nemizanim chon Left/Right ro kari nadarim faghat z/jelo+y/bala }
بخوام توضیح بدم باید این برنامه رو درک کنی و فقط توی سه بعدی تجسم کن که حرکت ما به سمت جلو هست پس خودت توی فضا میری سمت راست فکر کن توی محیط حاضر هستی و پس می فهمی x همون z(یعنی حرکت به جلو در واقیت و حرکت به راست ما در تجسم ) هست و y همون y .
(رسم دایره با استفاده از مثلثات و حلقه تکرار):
http://gameover.blog.ir/1394/03/%D8%A2%D9%85%D9%88%D8%B2%D8%B4-%D9%88-%D8%B3%D9%88%D8%B1%D8%B3-%DA%86%D8%B1%D8%AE%D8%B4-%D8%AF%D8%A7%DB%8C%D8%B1%D9%87-%D8%AD%D9%88%D9%84-%D9%85%D8%B3%D8%AA%D8%B7%DB%8C%D9%84-%D8%A8%D8%A7-%D8%A7%D8%B3%D8%AA%D9%81%D8%A7%D8%AF%D9%87-%D8%A7%D8%B2-%D9%81%D8%B1%D9%85%D9%88%D9%84%D9%87%D8%A7%DB%8C-%D9%85%D8%AB%D9%84%D8%AB%D8%A7%D8%AA%DB%8C-%D8%A8%D9%87-%D8%B2%D8%A8%D8%A7%D9%86-%D8%B3%DB%8C
تئوری کار همینا بود و اگه خطایی داشت با فکر کردن حلش کنید.
نکته آخر:
به جای حلقه ی تکرار بهتره حتما از تایمر کمک بگیرید و خودتون یک تایمر بنویسید چون حلقه های تکرار وقت پردازنده رو می گیرن و بهینه نیست.
var target : Transform; //the enemy's target var moveSpeed = 3; //move speed var rotationSpeed = 3; //speed of turning var range : float=10f; var range2 : float=10f; var stop : float=0; var myTransform : Transform; //current transform data of this enemy function Awake() { myTransform = transform; //cache transform data for easy access/preformance } function Start() { target = GameObject.FindWithTag("Player").transform; //target the player } function Update () { //rotate to look at the player var distance = Vector3.Distance(myTransform.position, target.position); if (distance<=range2 && distance>=range){ myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime); } else if(distance<=range && distance>stop){ //move towards the player myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime); myTransform.position += myTransform.forward * moveSpeed * Time.deltaTime; } else if (distance<=stop) { myTransform.rotation = Quaternion.Slerp(myTransform.rotation, Quaternion.LookRotation(target.position - myTransform.position), rotationSpeed*Time.deltaTime); } }
//tirZadan.csکد زیر هم به پریفب گلوله میدیم:
//Author:sajjad
//gameover.blog.ir
//@gameoverblog
using UnityEngine; using System.Collections; public class tirZadan: MonoBehaviour { // Use this for initialization public Transform emptyGameObject; public float distance; public GameObject enemy,prefBullet,bullet; public AudioClip shootAudio; public Transform shootPoint; float volumeSeda=1.0F;
int tedadTir=10;
void Update () { if (Input.GetButtonDown ("Fire1")) //age left_click shod { if(tedadTir > 0) { tedadTir--; bullet= Instantiate(prefBullet, emptyGameObject.position, Quaternion.identity)as GameObject; AudioSource.PlayClipAtPoint(shootAudio, shootPoint.transform.position, volumeSeda); } } }//update }
//bullet.cs
using UnityEngine; using System.Collections; public class bullet: MonoBehaviour { public RigidBoy rb; float distance=0.0f;//fasele sefr yani faghat vaghti tir barkhord kard be hadaf void Start(){ rb.AddRelativeForce(Vector3.forward );//partabe tir be samte jelo Destroy(gameObject, 3.0f);//hazfe tir pas az 3 sanie } void OnGUI(){ myRaycast(); } void myRaycast(){ RaycastHit hit; Ray myRay = new Ray(transform.position, Vector3.forward); if(Physics.Raycast (myRay, out hit, distance)){ if(hit.collider.tag == "enemy"){ Destroy(enemy); Destroy(this.gameobject); }//if }//if }//myRaycast }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public float speed = 10.0F; void Update() { Vector3 dir = Vector3.zero; dir.x = -Input.acceleration.y; dir.z = Input.acceleration.x; if (dir.sqrMagnitude > 1) dir.Normalize(); dir *= Time.deltaTime; transform.Translate(dir * speed); } }
using UnityEngine; using System.Collections; public class TiltAround : MonoBehaviour { private Quaternion localRotation; // public float speed = 1.0f; // ajustable speed from Inspector in Unity editor // Use this for initialization void Start () { // copy the rotation of the object itself into a buffer localRotation = transform.rotation; } void Update() // runs 60 fps or so { // find speed based on delta float curSpeed = Time.deltaTime * speed; // first update the current rotation angles with input from acceleration axis localRotation.y += Input.acceleration.x * curSpeed; localRotation.x += Input.acceleration.y * curSpeed; // then rotate this object accordingly to the new angle transform.rotation = localRotation; } }منبع:
در این آموزش با کیفیت عالی یاد می گیرید که در یونیتی انیمیشن دو بعدی بسازید و کاراکتر رو برای پرش و دویدن به چپ و راست انیمیت کنید و بعدش کدی با سیشارپ بنویسید که کاراکتر به همراه انیمیشن به حرکت در بیاد.
حجم آموزش: 128 مگ. بعد از آنزیپ دو برابر میشه حجمش.
نکته : باید برنامه 7 zip رو نصب کنید تا بتونید این اموزش رو آنزیپ کنید.
فرمت فایل بعد از انزیپ: mp4
اسکریپت گیم پلی دو بعدی و اسکریپت تعقیب پلیر توسط دوربین هم هدیه ما به شما.
قیمت این آموزش بسیار کم و ارزون هست ولی کیفیت اموزش عالیه و تضمین یادگیری.
اگه مشکلی توی دانلود یا ... پیش اومد تو نظرات بگید ایمیل بدید لینک mediaFire رو بهتون ارسال می کنیم.
منبع:gameover.blog.ir
ساخت یه بازی با دو تا دوربین سخت نیست.
دو تا Camre رو Add کنید .
مقدار خصوصیت H هر دو تا دوربین رو بذارید 0.5
Y بازیکن اول رو بدید 0.5
Y بازیکن دوم رو بدید 0
--
با اینکار بازیکن اول دوربینش بالای صحنه قرار می گیره و اون یکی پایین.
کیفیت : عالی
حجم:26 مگ (بعد از آنزیپ کردن میشه 60 مگ)
رویدادهای زیادی داریم مثل
Collider.OnTriggerStay برای بررسی ماندن در محدوده(این مورد مورد نردبان بهتر کار می کنه و بهتره به جای OnTriggerEnter استفاده بشه)
Collider.OnTriggerExit برای موردی که می خوایم تشخیص بدیم شی مورد نظر برخوردش با ما قطع شده.
دقت کنید که برای موارد دو بعدی و سه بعدی باید از توابع مربوط استفاده بشه ویلا ممکنه کار نکنه:
void OnTriggerStay2D(Collider2D other)
دوستان لطفا این برنامه رو شیر کنید برای حمایت از ما روی تبلیغات در بازی کلیک کنید.
بعد از build به apk ،در قسمت بالا و سمت راست پنجره ی console لاگ یا نوشته ها روی فلش کوچک پایین بزنید یک گزینه Editor Log رو می بینید.روش بزنید می گه چند درصد مربوط به کدوم بخش هست.
***Player size statistics***
Level 0 'Assets/Loader.unity' uses 459.0 KB compressed / 1.6 MB uncompressed.
Level 1 'Assets/Game.unity' uses 2.3 MB compressed / 7.8 MB uncompressed.
Total compressed size 2.8 MB. Total uncompressed size 9.4 MB.
Textures 3.9 mb 41.2%
Meshes 2.3 mb 23.9%
Animations 679.1 kb 7.0%
Sounds 0.0 kb 0.0%
Shaders 538.1 kb 5.6%
Other Assets 653.8 kb 6.8%
Levels 147.8 kb 1.5%
Scripts 453.3 kb 4.7%
Included DLLs 136.0 kb 1.4%
File headers 747.4 kb 7.8%
Complete size 9.4 mb 100.0%
Used Assets, sorted by uncompressed size:
277.1 kb 2.9% Assets/Player/Human.blend
264.1 kb 2.7% Assets/Player/Orc.blend
216.1 kb 2.2% Assets/Monsters/Foo.blend
213.0 kb 2.2% Assets/Dungeon/Dungeon.blend
170.8 kb 1.8% Assets/Monsters/FooSkin.png
...
Yes, Unity should make this critical information way more obvious!
Sometimes it's as simple as a texture you have forgotten to downscale, or a model that needs to have Compression turned on (model and/or animation). Sometimes you've inadvertently depended upon an expensive DLL (like XML). Sometimes a package you're using (like Detonator) has a lot of big unused Resources (unused mere assets don't matter).
Note on the above sizes: these are for a WebPlayer; unlike Android and iOS, web builds don't have to include the Player, since the user installs that separately (I suspect that's actually the entirety of your "problem").
http://answers.unity3d.com/questions/153065/file-size-is-far-too-big.html
منبع:gameover.blog.ir
روش قدیمی(منسوخ):
یک روش سنتی اینه که یک گیم ابجکت تهی یا empty game object بسازیم و دشمن و یک cube با رنگ قرمز رو بندازیم توی زیرشاخش(به عنوان فرزندش).
بعدش این مکعب رو scale کنیم و در مثلا راستای محور x جهانی(تحت زاویه ای که خود دشمن قرار گرفته یا نسبت به مرکز خودش) اونو کم کنیم مثال:
using UnityEngine; using System.Collections; //Author:sajjad3011 public class NewBehaviourScript : MonoBehaviour { public GameObject navarKhun; /* void Start () { navarKhun = GameObject.Find("Cube"); } */ public void btnChangeHeight() { navarKhun.gameObject.transform.localScale -= new Vector3(1,0,0); } }توضیح:
Image im; im.rectTransform.rect.width=100همچنین باید اسپرایت یا image خون رو lookat کنیم به دوربین که روش به سمت دوربین باشه.
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Transform target; void Update() { // Rotate the camera every frame so it keeps looking at the target transform.LookAt(target); } }دوربین رو باید بدیم به target در inspector تا نوار خون نگاهش به سمت دوربین باشه.
منبع:gameover.blog.ir
در قسمت سراسری public Animator anim; در قسمت دلخواه کد: غیر فعال کردن: anim.enabled=false; فعال کردن: anim.enabled=true;
منبع:gameover.blog.ir
مسیر Window->Profiler رو طی کنید.
در شکل زیر می بینیم هشتاد درصد پردازش مربوط به animator هست:
پس برای بهینه سازی بازی باید سعی کنید فقط در صورت نیاز کامپوننت انیمار رو setActive(true و در غیر اینصورت setActive(false کنید.
منبع:gameover.blog.ir
کاربرد:
تایپ خودکار متن در بازی ها:
اینم مثال:
using UnityEngine; using System.Collections; using UnityEngine.UI; // attach to UI Text component (with the full text already there) public class UITextTypeWriter.cs : MonoBehaviour { Text txt; string story; void Awake () { txt = GetComponent<Text> (); story = txt.text; txt.text = ""; // TODO: add optional delay when to start StartCoroutine ("PlayText"); } IEnumerator PlayText() { foreach (char c in story) { txt.text += c; yield return new WaitForSeconds (0.125f); } } }
منبع:gameover.blog.ir
using System.Xml; ... XmlDocument mydoc = new XmlDocument(); mydoc.Load("www.example.com/file.xml"); string mypoint = mydoc.GetElementById("mytext").InnerText;
public static void ClearLog() { var assembly = Assembly.GetAssembly(typeof(UnityEditor.ActiveEditorTracker)); var type = assembly.GetType("UnityEditorInternal.LogEntries"); var method = type.GetMethod("Clear"); method.Invoke(new object(), null); }نکته:کلمه var در js داریم اما توی سیشارپ هم var داریم برای مواردی که متغیری رو می خوایم در زمان اجرا پس از مقدار دادن نوعش رو تعیین کنیم.همچنین برای شناخت توابعی که نوشتیم اینا رو یادتون نره باید ضمیمه کنیم:
using System.Reflection; using UnityEditor;
منبع:gameover.blog.ir
رفتن به مرحله ی بعد پس از برخورد با درب در یونیتی_دقت کنید درب باید تگ door1 داشته باشه و گزینه ی isTrigger فعال باشه و پلیر باید isTrigger حتما غیرفعال باشه.. کد رو بدید به پلیر
برای کلایدرهای سه بعدی:
void OnTirggerEnter ( Collision Other ) { if ( Other.gameObject.name == "door1"){ Application.LoadLevel(Application.loadedLevel + 1); } }
برای کلایدر های دو بعدی
void OnTriggerEnter2D( Collider2D Other ) { if (Other.gameObject.name == "door1"){ Application.LoadLevel(Application.loadedLevel + 1); } }
OnTirggerEnter2d هم واسه دو بعدی هست.
Other.gameObject.tag همیشه داد به شرطی که به درب یک تگ(برچسب) بدیم (door1 یا door یا ...)
نکته:دقت کنید در حالت دو بعدی و سه بعدی اگه توابع اشتباه بدید کار نخواهد کرد کدها.
منبع:gameover.blog.ir
Occlusion Culling باعث میشه اجسام پشت دوربین رندر نشه و سرعت بازی رو خیلی بالا میبره و باعث کارایی بی نظیری در رندر میشه و حتی برای بازی های اپن ورد open world هم پاسخگو هست.
--
بعضی اوقات می خوایم فقط صحنه هایی که در محدوده ی دوربین هستن یا توی یک محوطه مکعبی دلخواه هستن رندر بشه فقط، تا سرعت بازی بره بالا یا بهینه تر بشه و پردازش اضافی برای قسمت هایی که پشت دوربین هست جهت رندر انجام نشه. اگه اشتباه نکنم طبق توضیحات سایر دوستان به این کار می گیم Occlusion system .
آموزش فارسی رو می تونید در دو تا فیلم آپارات ببینید :
منبع:gameover.blog.ir
حذف سایه ها و شرطهای اضافه تابع Update و استفاده از FixedUpdate.
cache کردن کلاس ها مثل tranform و ... مثال :
private Transform _transform; void Start () { _transform = this.transform;//cache for optimization }
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { IEnumerator WaitAndPrint() { // suspend execution for 5 seconds yield return new WaitForSeconds(5); print("WaitAndPrint " + Time.time); } IEnumerator Start() { print("Starting " + Time.time); // Start function WaitAndPrint as a coroutine yield return StartCoroutine("WaitAndPrint"); print("Done " + Time.time); } }
منبع :gameover.blog.ir
مثال1:
متغیری از نوع عمومی public می سازیم که باید کامپوننت انیمیشن هم drag کنیم روش در inspector.
روش زیر برای انیمیشن هایی که با انیماتور نمی شه اجرا کرد(انیمیشن های سنتی یا legacy که با نرم افزارهای قدیمی ریگ شده) و حتی انیمیشن های جدید(هر دو ) جواب مید:
public Animation anim; void Start() { anim.Play("esme animation"); }
مثال2:
متغیری از نوع خصوصی private می سازیم که کامپوننت انیمیشن رو از طریق کد دریافت می کنیم.
private Animation anim; void Start () { anim.GetComponent<Animation> (); anim.Play("esme animation"); }
نکته:
کامپوننت انیمیشن هم باید به player بدید. برای اینکه خودش کامپوننت رو بده یا نذاره حذفش کنید این دستور رو قبل از اسم کلاس بیارید:
[RequireComponent(typeof(Animation))]
نکته مهم: گزینه LEgacy یا سنتی در حالت دو بعدی یافت نمیشه و احتمالا فقط برای حالت سه بعدی در بخش Rig باید تنظیم بشه.(دو بعدی هم بهتره با Animator کار بشه نه Animation)
شاید یکی از دلایل افت فریم و کند شدن بازی های یونیتی اینه که از چند کامپوننت انیمیاتور استفاده کنیم.
پس بهتره بعضی اوقات به جای انیماتورها از کامپوننت انیمیشن استفاده بشه.
ابتدا کاراکتری که می خواید براش انیمیشن های مختلف بسازید انتخاب کنید( از کادر hierarchy(کادر اجزای صحنه))
سپس به منوی window->animation برید و انیمیشنی رو ایجاد کنید(Create new animation clip)
سپس کامپوننت animation بدید به کاراکترتون. و size بدید و انیمیشن ها رو بیارید توش:
دستور Crossfade:
سپس از کد زیر الهام بگیرید برای سوئیچ بین انیمیشن ها :(دقت کنید اسم اسکریپت و کلاس سیشارپ ما باید حتما یکسان باشه.در اینجا ExampleClass)
using UnityEngine; using System.Collections; public class ExampleClass : MonoBehaviour { public Animation anim; void Start() { anim = GetComponent<Animation>(); } void Update() { if (Mathf.Abs(Input.GetAxis("Vertical")) > 0.1F) anim.CrossFade("Run"); else anim.CrossFade("Idle"); } }
using UnityEngine; using System.Collections; public class create : MonoBehaviour { Ray ray; RaycastHit hit; public GameObject prefab; void Update () { ray=Camera.main.ScreenPointToRay(Input.mousePosition); if(Physics.Raycast(ray,out hit)){ if(Input.GetKey(KeyCode.Mouse0)) { GameObject obj=Instantiate(prefab,new Vector3(hit.point.x,hit.point.y,hit.point.z), Quaternion.identity) as GameObject; } } } }نکته :
هرمشکلی در پرداخت یا دانلود بود در وبلاگ gameover.blog.ir مطرح کنید.
شماره تماس بذارید برای تلگرام
09039739619
09358077198