Uğur Kubat

Bir geliştiricinin not defteri

24 Aralık 2015 Perşembe

Unity - Instantiate ile sahneye obje kopyalama

1 yorum
Bir objeyi karakteri veya herhangi bir prefapı sahnemize kopyalamak için Instantiate fonksiyonu kullanılır.Bu fonksiyonla aynı türden düşmanlar,mermi vs üretilip kullanılabilir.
Bir nesnemizi sahneye kopyaladığımız bir örnek yapalım.

  • İlk olarak kopyalamak için bir obje seçelim ve bir tane C# script oluşturup sahnemizde bulunan bir objenin üstüne taşıyalım.
  • Daha sonra scriptimize sınıf seviyesinde kopyalanacak obje için bir Transform yazalım. 
public Transform obje;

  • Oyun başladığında objenin sahneye kopylanması için start fonksiyonuna kopyalama fonksiyonun yazalım.
void Start()
{
 Instantiate(obje, new Vector3(0, 0, 0), Quaternion.identity);
 }

  • En son olarak da kopyalanacak olan objeyi scripteki objenin üstüne atalım ve oyunu çalıştralım.
Oyun çalıştığında objenin sahnenin 0,0,0 noktasında kopyalandığını görebilirsiniz.İyi çalışmalar.

20 Aralık 2015 Pazar

Unity - Look At

Hiç yorum yok
LookAt fonksiyonu bir objenin  bir diğer objeye doğuru dönmesini ona bakmasını sağlar.
  • İlk önce hangi objenin hangi objeye doğru bakacağını belirliyoruz.(bakacak objemiz düşman karakter veya kamera vs olabilir)
  • Bir script açıyoruz ve sınıf düzeyinde bakılacak objenin Transformunu tanımlıyoruz.

public Transform hedef;

  • Daha sonra Update fonksiyonunda aşağıdaki kodlarla objemizin belirlediğimiz objeye dönmesini sağlıyoruz.
 void Update()
    {
        transform.LookAt(hedef);
    }
  • En son olarak bu scripti bakacak olan nesnenin üstüne atıyoruz ve hedef Transformuna bakılacak nesneyi atıyoruz.
İyi çalışmalar.

16 Aralık 2015 Çarşamba

Unity - Vector3.Lerp

Hiç yorum yok
Vector3.lerp  bir objeyi belli bir saniyede belli bir konumdan belli bir konuma götüren fonksiyondur.

  • İlk olarak  objenin başlangıç ve bitiş konumlarını sınıf düzeyinde tanımlıyoruz.
public Vector3 baslangıc=new Vector3(0,0,0);
public Vector3 bitis=new Vector3(100,0,0);

  • Daha sonra Update metodunda aşağı kodlarla objenin 10 saniyede başlangıçtan bitiş noktasına gitmesini sağlıyoruz.
void Update ()
{
transform.position = Vector3.Lerp(baslangıc, bitis, Time.time*0.1f);
}


  • Bu koddaki 0.1f 10 saniyeyi ifade eder bu sayı değeri 1f olduğunda 1 saniyeyi 10f olduğunda 0.1 saniyeyi yani ters orantı vardır.
İyi çalışmalar.

13 Aralık 2015 Pazar

Unity - Sahneler arası geçiş

7 yorum
Oyunlar genelde farklı bir çok level ve farklı sahnelerden oluşur.Bu farklı level ve sahneler arasında geçiş unityde nasıl yapıldığını göstereceğim.


  • Sahne1 ve Sahne2 adında 2 tane sahnemiz olduğunu ve sahne 1 den sahne 2 ye geçmemiz gereken bir senaryo düşünelim.
  • İlk olarak bu sahneleri File-Build Settings menüsünden Add Current butonu ile  build edilecek sahnelere ekleyelim.
                                       Build settings


  • Daha sonra belirlediğimiz senaryoya göre şartın gerçekleştiği yere aşağıdaki kodu yazalım.(Şartımız bir nesnenin bir nesneye çarpışması,enerjimizin bitmesi ,bir tuşa veya butona tıklanması vs olabilir )
Application.LoadLevel(1);
veya
Application.LoadLevel("Sahne2");


  • Buradaki bir sahneleri eklediğimizde her sahneye verilen numaradır.İki şekilde de kullanabilirsiniz bir fark yoktur.
İyi çalışmalar.

11 Aralık 2015 Cuma

Unity-Yansıma yapmak

Hiç yorum yok
Unityde ayna veya güvenlik kameraları gibi bir yerin görüntüsünü başka bir yere yansıtmak için Render Texture kullanılıyor.Kamera ile aldığımız görüntüyü nasıl bir objeye yansıtıldığını göstereceğim.

  • ilk önce Project-Create-Render Texture yolu ile Render Texture üretiyoruz.Sonra yine aynı yolla bir meterial üretip Render texture yi üretien meterialin Albedo kanalına atıyoruz.


 

  • Daha sonra görüntüsü yansıtılıcak kameranın Target texturesine bu Textureyi atıyoruz.
     Target Texture

  • Daha sonra hazırladığımız meteraili yansıtılacak objeye atıyoruz.Kamerada render edilen görüntü o objenin üzerine kaplanacaktır. Bu yöntemle oyun içinde bir ekran ayna veya  herhangi bir yansıma yapabiliriz.

15 Kasım 2015 Pazar

Unity- Invoke

Hiç yorum yok
Unityde belli zaman aralıklarıyla belli bir fonksiyonu çalıştırmak için Invoke fonksiyonları kullanılır.

                                       Invoke

  • Belli bir zaman sonra fonksiyonu çalıştırmaya yarar.
  • Aşağıdaki örnekte 2 saniye sonra  konsola oldu yazdırır.
void Start () {
 Invoke("yaz", 2);
 }
 void yaz() {
 Debug.Log("oldu");
 }

                                   InvokeRepeating

  • Belli bir zaman sonra belli aralıklarla fonksiyonun çalışmasını sağlar.
  • Aşağıdaki örnekte 2 saniye sonra her bir saniyede konsola oldu yazdırır.
void Start () {
 InvokeRepeating("yaz", 2, 1);
 }
 void yaz() {
 Debug.Log("oldu");
 }

                                       CancelInvoke

  • InvokeRepeating fonksiyonun sonlanmasını sağlar.
  • Aşağıdaki kodu InvokeRepeating ile çalıştırdığımız fonksiyonun durmasını sağlar.
CancelInvoke();

14 Kasım 2015 Cumartesi

Unity - Temel Fonksiyonlar

Hiç yorum yok
     Unity deki çalışma zamanlı bazı fonksiyonları yazacağım.

                                       Awake

  • Bu fonksiyon sahne yüklendiğinde ilk çalışan fonksiyondur.
  • Bir kere çalışır.
  • Ayrıca bu fonksiyonun en önemli özelliği yazdığımız script aktif olmasa dahi çalışmasıdır.

                                       Start

  • Update fonksiyonu ilk kez çalıştırılmadan önce çalışır.
  • Bir kere çalışır

                                     Update

  • Her framede(oyun karesi) 1 kere çalışır.
  • Bilgisayar işlem hızına göre çalışma aralığı  değişebilir.
  • En sık kullanılan Update çeşitidir.

                                FixedUpdate

  • Sabit süre aralıklarıyla çalışır.
  • Bilgisayar işlem hızından etkilenmez.

                                 LateUpdate 

  • Update fonksiyonuyla aynı özelliklere sahiptir.
  • En son çalışan update fonksiyonudur.
  • Daha çok kamera ile bir nesneyi takip ettiğimiz durumlarda kullanılır.

13 Kasım 2015 Cuma

Unity - Tuş Atama

2 yorum
Unity de istediğimiz tuşa basıldığında bir olayın gerçekleşmesini sağlaya biliriz.Bunun üç farklı çeşidi vardır.
  1. GetKey - Basıldığı sürece çalışır
  2. GetKeyDown - Basıldığında sadece 1 kere çalışır.
  3. GetKeyUp - Elimizi tuştan kaldırdığımızda 1 kere çalışır.

                                         GetKey

Update metodu içinde aşağıdaki kodlarla istediğimiz tuş basıldığı sürece istediğimiz işlemlerin yapılmasını sağlayabiliriz.


if (Input.GetKey (KeyCode.LeftArrow))//KeyCode ile hangi tuş olduğunu belirliyoruz.
{
//Yapılacak işlemler buraya yazılır.
 }

                                     GetKeyDown              

Update metodu içinde aşağıdaki kodlarla istediğimiz tuşa bastığımızda istediğimiz işlemlerin yapılmasını sağlayabiliriz.                                                      
if (Input.GetKeyDown (KeyCode.LeftArrow))//KeyCode ile hangi tuş olduğunu belirliyoruz.
{
//Yapılacak işlemler buraya yazılır.
 }

                                         GetKeyUp

Update metodu içinde aşağıdaki kodlarla istediğimiz tuşa basmayı bıraktığımızda istediğimiz işlemlerin yapılmasını sağlayabiliriz. 
if (Input.GetKeyUp (KeyCode.LeftArrow))//KeyCode ile hangi tuş olduğunu belirliyoruz.
{
//Yapılacak işlemler buraya yazılır.
 }

12 Kasım 2015 Perşembe

Unity Force - Objeyi kuvvetle hareket ettirmek

Hiç yorum yok
Unity de nesneye kuvvet uygulamak için Rigibody içinde bulunan Force fonksiyonu kullanılır. Bu yazıda Force fonksiyonuyla bir sphere(küre) objesinin nasıl hareket edileceğini yazacağım.


  • İlk olarak yeni bir unity projesi açıp sphere objesi oluşturuyoruz.
  • Objeye kuvvet uygulaya bilmek için sphere objesine Rigibody componenti ekliyoruz.
  • Daha sonra yeni bir c# scripti açıyoruz.
  • Dışarıdan hızı ve Rigibody tanımlamak için public olarak sınıf içinde tanımlıyoruz.

public float hız ;
public Rigidbody rg;

  • Start fonksiyonunda rg ye Rigibody componentini tanımlıyoruz.
rg = GetComponent<Rigidbody>();

  • En son olarak hangi yönde kuvvet uygulanacağını Update fonksiyonu içinde hangi yönde kuvvet uygulanacağını yazıyoruz.
rg.AddForce(Vector3.right*hız);

  • Yukardaki kodu oyunumuza göre şartlara bağlıyarak kullanabiliriz mesela bir tuşa basıldığında hareket etmesi için veya bir eşya çarptığında hareket etsin gibi.
  • Daha sonra unity içinden sphere eklediğimiz Rigibodyi scripteki Rigibodye sürüklüyoruz.Hızıda oyunumuzda istediğimiz hıza göre bir sayı veriyoruz.

18 Eylül 2015 Cuma

Windows Phone Yorum yap ve Mail at Butonu eklemek

Hiç yorum yok

                        Yorum yap 


  • İlk önce aşağıdaki referans kodunu ekliyoruz.
  • using Windows.ApplicationModel.Store;
  • Sonra yorum adında bir async void bir metot yazıyoruz.
private async void yorum()
{
await Windows.System.Launcher.LaunchUriAsync(new Uri("ms-windows-store:reviewapp?appid=" + CurrentApp.AppId));
 } 

  • Sonra buttonun click eventine yorum metotunu çağırıyoruz.
private void HyperlinkButton_Click_1(object sender, RoutedEventArgs e)
{
 yorum();
 }

                        Mail at

             
  • İlk önce aşağıdaki referans kodunu ekliyoruz.
using Windows.ApplicationModel.Email;
  • İlk önce mail adında bir async void bir metot yazıyoruz.
private async void mail()
{
EmailRecipient alici = new EmailRecipient() { Address = "mail@yaz.com" };
EmailMessage mail = new EmailMessage();
mail.Subject = "Başlık";
mail.To.Add(alici);
}

  • Sonra buttonun click eventine yorum metotunu çağırıyoruz.
private void HyperlinkButton_Click(object sender, RoutedEventArgs e)
{
mail();
}

13 Eylül 2015 Pazar

C# String İşlemleri

Hiç yorum yok
Bu yazımda C# da String işlemleriyle ilgili notlar yazacağım. 


  • Length


Stringin karakter sayısını gösterir. Boşlukları da sayar.
Kod:  
string yazi = "Uğur Kubat";
MessageBox.Show(yazi.Length.ToString());

Çıktı:
10


  • Remove


String ifadenin belli bir bölümünü silmeye yarar.
Kod:
string yazi = "String İşlemleri";
string yeniYazi = yazi.Remove(3, 2);
MessageBox.Show(yeniYazi);
Çıktı:
Strg İşlemleri

  • Replace

String ifadenin içindeki metni veya karakteri değiştirmeye yarar.

Kod:
string yazi = "String İşlemleri";
string yeniYazi = yazi.Replace("String", "Yazi");
MessageBox.Show(yeniYazi);
Çıktı:
Yazi İşlemleri


  • ToLower

Stringi küçük harfe çevir.

Kod:
string yazi = "String İşlemleri";
string yeniYazi = yazi.ToLower();
MessageBox.Show(yeniYazi);
Çıktı:
string işlemleri


  • ToUpper

Stringi büyük harfe çevir.

Kod:
string yazi = "String İşlemleri";
string yeniYazi = yazi.ToUpper();
MessageBox.Show(yeniYazi);
Çıktı:
STRİNG İŞLEMLERİ


  • StartWith

Stringin başının hangi karakter yada kelime ile başlayıp başlamadığını bulmamıza yarar

Kod:
string yazi = "String İşlemleri";
string yeniYazi = yazi.StartsWith("String").ToString();
MessageBox.Show(yeniYazi);
Çıktı:
True


  • EndsWith

Stringin sonunun hangi karakter yada kelime ile bitip bitmediğimizi bulmamıza yarar

Kod:
string yazi = "String İşlemleri";
string yeniYazi = yazi.EndsWith("eri").ToString();
MessageBox.Show(yeniYazi);
Çıktı:
True


  • Trim

String ifadede ki boşlukları siler. TrimStart baştaki TrimEnd ise sondakini siler.

Kod:
string yazi = " String İşlemleri ";
string yeniYazi = yazi.Trim();
MessageBox.Show(yeniYazi);
Çıktı:
String İşlemleri


  • SubString

String ifadede ki boşlukları siler. TrimStart baştaki TrimEnd ise sondakini siler.

Kod:
string yazi = "String İşlemleri";
string yeniYazi = yazi.Substring(2, 7);
MessageBox.Show(yeniYazi);
Çıktı:
ring İş

Benim notlarım bu kadar ben string işlemleri olarak bunları kullanıyorum eğer tüm string metotolarına bakmak isterseniz buradan bakabilirsiniz.


5 Eylül 2015 Cumartesi

Blender 3D Cursor

Hiç yorum yok
  
Blender
 Öncelikle Blender dan bahsetmek gerekirse Blender 3 boyutlu obje animasyon tasarım yapmamıza sağlayan açık kaynak kodlu ücretsiz bir yazılım.Blenderi burdan indirebilirsiniz.
  Bildiğiniz gibi ben oyun ve uygulama geliştirmeyle ilgileniyorum. Blenderide yapacağım oyunlardaki obje ve karakter tasarımları için kullanacağım.Neyse uzatmadan Blenderla ilgili ilk notlarıma geçeyim :)
Not:Blender kullanmada kısa yol tuşları çok önemlidir.Bende notlarımda genellikle tuşlar üzerinden anlatacağım. 
 3D Cursor Blender sahnesinde sol tıkladığımız yere gelen aşağıdaki şekilde gözüken işarettir.
 3D Cursor Blender sahnesinde bir objenin yerini , objenin merkezini değiştirmemiz de veya objelerin birbirlerine göre konumlandırmamız da yardımcı olur.
  • 3D Cursor farenin sol tuşuyla istediğimiz yere taşınır.
  • Yeni üretilen objeler 3D cursor neredeyse orada üretilir.
  • Shift+S ile Snap menüsü açılır.
  • Snap menüsünde cursorun yeri ve objelerin cursora taşınması gibi işlemler yapılır. 
  • Snap
  • Selection to Cursor Seçilen objenin cursorun üstüne gitmesini sağlar.
  • Cursor to Selected cursorun Seçilen objenin üstüne gitmesini sağlar.
  • Cursor to Center cursorun sahnenin merkezine yani {0,0,0} noktasına gitmesini sağlar.
  • Cursor to Active  Birden fazla obje seçilmişse cursorun en son seçilen objenin üzerine gitmesini sağlar.
  • Shift+Ctrl+Alt+C  ile Set Origin menüsü açılır.

  • Origin bir objenin merkezidir. Orgini cursor yardımıyla farklı yerlere taşınabilir.
  • Bir objeyi Cursora taşıdığımızda Orgin ve Cursor üst üste gelir .Yani Origin objenin köşesinde ise Cursora taşıdığımzda objenin köşesi Cursorun üstüne gelir.
  • Geometry to Origin Seçilen objenin orgin objenin merkezine gelecek şekilde orginin üstüne gitmesini sağlar.
  • Origin to Geometry Orginin objenin merkezine gelmesini sağlar.
  • Origin to 3D Cursor Orginin 3D cursor üzerine gelmesini sağlar.
Origin ve Cursoru Objelerin köşelerine getirme ?
  • Tab tuşu ile edit moda geçip sağ tuşla objenin köşesini seçip Snap menüsünden Cursor to selected ile Cursorun köşeye gelmesini sağlayalım.
  • Tekrar Tap tuşu ile Object moda geçip Set Origin menüsünden Origin to 3D Cursor ile originin köşeye gelmesini sağlayalım.
Hatasız kodlar yazmanız dileğiyle iyi çalışmalar :)

DispatcherTimer Sınıfı

Hiç yorum yok

DispatcherTimer Sınıfı uygulama içinde belirli zaman aralıklarıyla belli metot veya fonksiyon çalıştırmasını sağlar.

Örneğin uygulamamızda bir sayfadaki textbox daki yazının 2 saniyede bir değişmesini istiyoruz diyelim işte bunu bu sınıfla yapacağız.

İlk önce sınıf düzeyinde nesne çağırıyoruz:


DispatcherTimer timer = new DispatcherTimer();

Daha sonra main page içerisine şu kodları yazıyoruz:


timer = new DispatcherTimer();
timer.Interval = TimeSpan.FromSeconds(2); 
timer.Tick += new EventHandler(timer_Tick); timer.Start();

En son olarakta bir metot yazıyoruz.Bu methot içine olmasını istediğimiz kodu yazıyoruz:

 
void timer_Tick(object sender, EventArgs e)

 textbox.Text=yazılar();//Yazılar metotundan her 2 saniyede bir yazı çekecek
}

Bir notun daha sonuna geldik iyi günler.