Aynen |
Merhaba ben yazilim hakkinda hicbirsey bilmiyorum. Yani cok az bilgim var. unity kullanmak icin altyapi olusturacak baska dil gereklimi yoksa bu rehberden baslayip kafamdaki minik projeyi yapabilirmiyim? |
Bir bilgi gerekli değil efendim. Direk olarak rehbere başlayabilirsiniz. Bu rehber sonunda programı nasıl kullanacağınızı, bir bilgiye ihtiyacınız olduğunda nereye bakmanız gerektiğini ve bunları nasıl uygulamanız gerektiğini ogrenirsiniz. İstikrarlı bir şekilde çalışırsanız eminim aklinizdaki projeyi gerçekleştirebilirsiniz. |
Tamam tesekkur ederim. Peki cizimleri yani modelleri eklemek icin ayri bir program kullanabilir miyim yoksa unitydenmi cizmek zorundayim dedigim gibi hicbir fikrim yok![]() |
Tabiki ister hazır Asset(Varlık)lar indirip kullanabilirsiniz, ister 3DsMax, Blender gibi programlardan kendiniz model yapıp Unity'ye import edebilirsiniz. ![]() |
Tesekkurler yardimlariniz icin aklima takilan yer olursa sorarim yine![]() |
hocam o yabancı grafik derslerini torrent olarak verebilir misiniz ? Yönlendiririm demişsiniz? |
Dönüş yaptım efendim. |
c# bilen arkadaşlar. FPS oyununda kamera animasyonları sırasında unity kendi kendine character controlleri mouselooku yani komple fps input controlleri devre dışı bırakıyor ki kamera animasyonu bozulmasın. İyi güzel, fakat animasyon sırasında footsteps scripti de devreye giriyor. Animasyonda ayak sesleri çıkıyor. Javascriptte yapabilirdim, fakat temel scriptler c# olduğundan dolayı c# da yazmak zorundayım. footsteps scripti : using UnityEngine; using System.Collections; public class FootSteps : MonoBehaviour { public AudioClip[] footsteps; public float nextFoot; IEnumerator Start () { CharacterController controller = GetComponent<CharacterController>(); while(true) { if(controller.isGrounded && controller.velocity.magnitude > 0.3F) { audio.PlayOneShot(footsteps[Random.Range(0, footsteps.Length)]); yield return new WaitForSeconds(nextFoot); } else { yield return 0; } } } } Şimdi yukarda if komutunda karakter yere deyiyorsa ve ivme 0.3 ten fazla ise ayak seslerini random bir şekilde çıkartıyor. Ben de demek istiyorum ki bu if satırına "animasyon oynarken" komutunu eklemek istiyorum. Haliyle ilk önce yukarıya public CharacterController playerController; public Animation anim; //Empty GameObject's animation component ekleyip, aşağıdaki satırı elde ediyorum if(controller.isGrounded && controller.velocity.magnitude > 0.3F && !anim.isPlaying("bed")) Ama unity diyor ki bu komutu bu şekilde kullanamazsın. Benim derdim sadece animasyondayken "footsteps" scriptini devre dışı bıraksın. |
Bulabildiniz mi hocam? |
Yok, bulamadım. Şu anlık level ve script dizaynına devam ediyorum. Daha sonra ilgileneceğim. Açıkçası programlama dilinle aram iyi değildir. Javascript biraz daha kolay ve anlaşılır olduğu için js de daha az sorun yaşıyorum. C# olunca kafam atıyor :D Başka bir footsteps scripti bulmam gerekiyor. Ayrıca o da C# olmak zorunda. Çünkü JS scriptin içinde C# çağıramıyorsunuz :( |
JS'den C# cagirabilirsin, ben her daim cagiriyorum. Ama tersini yapmak uzun ugras. |
Mesela alt dizindeki bir gameobjectten "kro" adlı c# scriptini çağıracağım. Her zamanki gibi getcomponentinchildren dan çağırıyorum, fakat dediğim komutu üstüne uygulamıyor. Edit: Sanırım buldum, deneyeceğim. // This finds the script called OtherScript in the same game object // and calls DoSomething on it. function Update () { var otherScript: OtherScript = GetComponent(OtherScript); otherScript.DoSomething(); } Aynı gameobjectteki scriptleri çağırmak getcomponentle oluyor, alt dizindeki gameobjectteki scripti çağırmak için getcomponentinchildren. Peki ben "masa" adlı gameobjectteki "kro2" scriptini çağıracaksam, bunu nasıl yapacağım? |
Yok, çağırmıyor. Ben girip çağırırsam tam çağıracam :D Bağımsız başka gameobjectteki JS scripti çağırabiliyorum. var otherScript : scriptadı = GameObject.Find("GameObjectadı").GetComponent(scriptadı); Ama C# olunca görmüyor :S |
C# classlarinin JS'den once compile olmasi lazim. Yani C# classlarin Plugin veya Standard Assets dosyalari altinda bulunmak zorunda JS'den once. http://docs.unity3d.com/Documentation/ScriptReference/index.Script_compilation_28Advanced29.html |
Evet, biliyorum. Standart Assets in altında Script klasöründe tüm scriptlerim bulunmakta. Hepsi bir yerde. ![]() |
Birde soyle dene, tirnak isaretleri ile C# cagirirken prosedur biraz degisik var otherScript : scriptadı = GameObject.Find("GameObjectadı").GetComponent("scriptadı"); |
Yine olmadı, ama çok ilginç bir şey ile başardım. Standart Assetsin içindeki script klasorumu komple kaldırdım, tekrar yarattım. Şimdi gördü. Bi ara dedim acaba public class değil mi c# scripti diye, baktım public. Şimdi dizini tekrar oluşturdum oldu. Unity 4'ün de bir bugını keşfettim galiba :D |
Unitynin kotu yani bu iste, binlerce bug var, stabil degil, aklin sirrin almadigi bir dolu error var, script problemi var. |
Başladıysanız hiç değiştirmeyin. Dediğiniz gibi boşuna zaman kaybı olur. C# hakkında yardımcı olacağım.