Tufan etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster
Tufan etiketine sahip kayıtlar gösteriliyor. Tüm kayıtları göster

26 Temmuz 2016 Salı

UNITY ONMOUSEDOWN KOMUTU

void OnMouseDown ()
    {
        rigidbody.AddForce(-transform.forward * 500f);
        rigidbody.useGravity = true;
    }
Bu komut ile nesnenin üzerine mouse ile tıklanıldığında ne yapılacağını göstermiş olursunuz.Mouse ile tıklanıldığında sadece 1 kez çalışır.Basılı tutulması gibi durumlar için veya mouse üzerine gelince bırakınca gibi kodlar için IPointer interfaceleri tanımlanmalıdır.Bunlar ise eventSystem içindedir.Genelde canvas ve UI elemanlar için kullanırım.Lakin onMouseDown komutu oyun için de kullanılır. 

13 Ocak 2016 Çarşamba

Unity3D Parçacık Sistemi

UNITY 3D PARTICLE SYSTEM

Merhaba. Bu yazı Unity oyun motorunda parçacık sistemi konusunda sürekli yararlanabileceğiniz tanımlar içeren bir yazıdır.




Öncelikle en baştan tanımlara göz atalım.

Duration 


Parçacık üretme süresidir.Duration değeri saniye cinsinden alınır örnek fotoğrafta 5.00 demesi 5 saniye boyunca parçacık üretileceği anlamına gelir.5 saniye sonunda ise bu üretim bitecektir.

Looping


Loop tekrar etme anlamı taşır.Parçacık üretim süresi bittiğinde tekrar başlatmak için loop kutucuğu işaretli olmalıdır.Sürekliliği sağlar.

Prewarm


Normal şartlarda ilk kez çalışmaya başlayan parçacık sistemi hızlanan bir tempoda çalışır.Yeni başladığı bellidir.Fakat bu seçenek açıksa yeni değilde sürekli açıkmış gibi çalışır başlangıçtaki hızlanma temposuna hiç girmeden direkt olarak hızlı başlar.

Start Delay


Parçacık tetiklendiğinde delay kutusunda yazan değer kadar (saniye) bekler parçacık üretmez.Sonra normal şekilde üretime başlar.

Start Lifetime


Üretilen her bir parçacığın hayatta kalma süresidir.Parçacıklar burada yazan değer (saniye) süre sonra yok olacaktır.

Start Speed


Parçacık dağılma hızıdır.

Start Size


Parçacık genişliğidir.

Start Rotation


Parçacık dönme açısıdır.Yuvarlak parçacıklarda fazla belli olmaz.

Start Color


Parçacık rengidir.4 farklı türü vardır.Default,gradient,random,gradient-random bu dörtlüyü oluşturur.



Default 

 Normal olarak parçacığa renk verir.

Gradient 

Başlangıç ve Bitiş rengi verilir.Ara renkleri Unity ayarlar Duration a bağlı olarak parçacık rengi değişir.

Random 

Random ise iki farklı renk veririz ve her parçacık için iki renk arası rastgele renk seçer.

Gradient - Random 

Bu özellik ise Gradient ve Random birleşimidir.

Gravity Modifier


Parçacıklar dağılmaya başladıktan sonraki hareketlerinde yerçekimi etkisini ayarlar.Eksi değer verilirse yukarı artı değer verilirse aşağı yönde hareket eder.

Play On Awake


Oyun ilk açıldığında bu parçacık nesnesinin başlayıp başlamayacağını belirtir.Eğer seçili ise oyun başlayınca parçacık sistemi de başlar değilse kod ile tetiklenerek çalıştırılır.

Max Particles


Kaç adet parçacık üretileceği buradan ayarlanır.Maximum değere gelirse üretim duracaktır.

Emission




Rate eğer zamana bağlı ise (Time) 1 saniyede ki parçacık üretimini yönetir.(Adet) 
Bursts ise sürekli simetrik üretilen parçacıkların belli bir zaman içinde belli bir parçacığı bir anda üretimini sağlar.Bir patlama etkisi oluşturur.


Rate eğer distance e bağlıysa bu parçacık sistemi bulunduğu yerden bir birim yer değiştirmesi ile aktif olacak ve rate değeri kadar parçacık üretecektir.


Shape


Bu bölümde parçacık çıkış ve dağılış hareketleri ayarlanır.



Shape bölümü yayılış şeklidir.Fotoğrafta koni şeklinde yayıldığını göstermektedir. Ama bir çok farklı yayılışı vardır.Angle açı belirtir.Radius ta öyle.Random direction dersek şekle bakmaksızın dağılacaktır.


Son olarak Wildframe seçili iken parçacıklar kutu seklinde görülür.Sadece sahne ekranında böyle olacaktır.

22 Aralık 2015 Salı

UNİTY 3D - Invoke() Fonksiyonu

Unity 3D ile Zamanlanan İşlemler

Unity de Invoke fonksiyonu belli işlemlerin yapılmasını zamanlamak için kullanılır.Yani istenilen fonksiyonu kendi belirlediğimiz zamana göre çağırır.

public GameObject nesne;
    void Start()
    {
        Invoke("uret", 1,1);
    }
    void uret()
    {
        Instantiate(nesne, new Vector3(0, 2, 0), Quaternion.identity);
    } 

Burada Invoke içerisinde tırnak içine yazdığımız 1. parametre çağırılan fonksiyon yani "uret" ve 2. parametre ise bu sınıf çağırıldıktan 5 saniye sonra çağırılmasını sağlar. 

Burada uret fonksiyonu sadece 1 kere çağırıldı.Bunu sürekli belirli bir zaman aralığı ile çağırmak isteseydik eğer InvokeRepeating fornksiyonu çağırırız.

  public GameObject nesne;
    void Start()
    {
        InvokeRepeating("uret", 1,1);
    }
    void uret()
    {
        Instantiate(nesne, new Vector3(0, 2, 0), Quaternion.identity);
    }
    

Bu şekilde sürekli çağıracaktır.en sona eklediğimiz parametre kaç saniyede bir çağırılacağını söyler.Fakat bunu durdurmak için en komut kullanmak gerekir.Bu komutun adı ise CancelInvoke() fonksiyonudur.Tek bir fonksiyon için durdurmak istiyorsak da CancelInvoke(uret) şeklinde kullanırız.

    public GameObject nesne;
    void Start()
    {
        InvokeRepeating("uret", 1,1);
    }
    void uret()
    {
        Instantiate(nesne, new Vector3(0, 2, 0), Quaternion.identity);
    }
    void Update()
    {
        if (Input.GetKey(KeyCode.Space))
        {
            CancelInvoke();
        }
    }

Burada ise space tuşuna basana kadar üret space tuşuna basınca dur diyoruz.

7 Aralık 2015 Pazartesi

Design Patterns - Singleton

Design Patterns - Singleton


  Bir nesneden sadece 1 tane üretilmesini sağlayan tasarım kalıbıdır.2 adet kuralı vardır


  • Başka yerde üretilmediğinden emin ol.
  • Tek bir noktadan her yere erişim ver.
  Tek kullanıcılı bir otomasyon yaptığımızı düşünelim.Tek kullanıcı olduğundan profili tek yapar ve tüm para değerlerini orada tutmak isteyebiliriz.(Sadece bir örnek)

  Öncelikle başka yerde üretilip üretilmemesini kontrol etmek için yapılandırıcısını dışarıya kapalı hale getiririz.
  


class Profil
    {
        private static Profil profil = new Profil();

                   //Yapılandırıcı private
        private Profil() { }

    }

  Fakat bu şekilde bırakırsak bu nesne sadece içeride üretilebilir ve oda hiçbir işimize yaramaz.Bu bakımdan bu koda static bir erişim fonksiyonu ekliyoruz.


class Profil
    {
        private static Profil profil = new Profil();

                   //Yapılandırıcı private
        private Profil() { }

        //üretim fonksiyonu
        public static Profil getProfil()
        {
            return profil;
        }
    }

  Artık bu fonksiyona ulaşmak için yapılacak tek şey 
Profil a=Profil.getProfil(); deyip a ya profildeki nesne adresini atamak.Şuanda tüm şartları sağlıyor hem 1 tane üretiliyor hemde herkez aynı nesneyi kullanıyor.