Popüler Yayınımıza da Göz Atabilirsiniz
Unity Time.DeltaTime Nedir? AÇIKLAYICI | UNITY Eğitim
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
Update ve FixedUpdate gibi tekrar eden fonksiyonlarda Time.deltaTime kullanılır peki niçin , ne amaçla kullanıyoruz?
Biliyoruz ki her bilgisayarda aynı frame performansını anlamamız pek mümkün değildir. Bir bilgisayarda 60 fps değeri , diğerinde ise 30 fps değeri ile oynadığımızı düşünelim. Update fonksiyonumuz birinde saniyede 60 kere çalışırken diğerinde 30 kere çalışacaktır. Bu yüzden burada yapmış olduğumuz tekrarlı matematiksel işlemler , karakterimizin hareketi farklılıklar gösterecektir. Bir bilgisayardaki karakter ile yarışın sonuna gelmişken diğeri ile daha yeni yarısında olduğunuzu düşünün. İşte bu durumu ortadan kaldırmak için Time.DeltaTime kullanıyoruz. Bu sayede her 2 frame arasındaki zaman hesaplanıyor. Yaptığımız işlemi bu değer ile çarpınca her 2 bilgisayarda da aynı konumda oluyoruz. Peki nasıl oluyor?
Şöyle farz edelim ki; A bilgisayarında her frame arası sabit bir şekilde 1 sn olsun
B de ise 2 sn olsun.
A'da 2 frame gösterilmişken B'de ise 1 kere gösterilmiş olacaktır. Bu yüzden A karakteri 2 adım ilerlerken B 1 ilerleyecektir. Böylece arada fark olmuş olacaktır. Eğer 2 frame aramız 2 sn ise biz hareket miktarımız 2 ile çarparsak B bir kere çalışmış olmasına rağmen 2 adım gitmiş olacaktır.
A bilgisayarı
Time.deltatime değeri 1 (frameler arası süreden dolayı)
transform.position += new Vector3(1f,0,0)*Time.Deltatime;
1 sn de 60 kere çalışır ve Time deltatime 1 dir. > 60 birimlik hareket.
B bilgisayarı
Time.deltatime değeri 2
transform.position += new Vector3(1f,0,0)*Time.Deltatime;
1 sn de 30 kere çalışır ve Time deltatime 2 dir. > 60 birimlik hareket.
Yani aynı sonucu almış oluyoruz.
Bu basit örnek mantığını kavramamızı sağlamıştır, Buraya kadar anladıysak şöyle devam edelim. Update fonksiyonuna yazdığımız işlemler her bir frame de çalışır. Ama frameler arası süreler eşit değildir. Mesela 1. ve 2. frame arası 0.145f değeri iken 2. ve 3. arası 0.176f olabilir yani her bir frame arası süre farklıdır ama biz bir değeri Time.deltaTime ile çarptığımızda, aynı değeri elde etmiş oluruz. Yukarıdaki örnek gibi. Bu sayede eşit zamanda aynı sonucu elde ederiz ama deltaTime kullanmadığımızda bunu söylemek doğru olmayacaktır.
Çok kafa karıştıran ve doğru düzgün bilinmeyen bu değerin mantığını sizlere anlattım. Yorum atarak görüşlerinizi bildirebilirsiniz. Destek olmayı unutmayın! Teşekkürler!
- Bağlantıyı al
- X
- E-posta
- Diğer Uygulamalar
Yorumlar
Bu blogdaki popüler yayınlar
C# örnekleri oyun nasıl yapılır
C# örnekleri oyun nasıl yapılır Merhaba arkadaşlar bugün sizler c# ile yaptığım oyunları göstereceğim isterseniz bunları indirebilirsiniz. Projelerin kodlarını videonun açıklama kısmından ulaşabilirsiniz. 1.Kim Milyoner Olmak İster Oyun Yapımı - Bilgi Yarışması Oyun Yapımı 3 videoluk bu seride bilgi yarışması nasıl yapılır onu anlattık. 2.Yılan Oyun Yapımı Tek videoda basit bir şekilde yılan oyunu nasıl yapılır bundan bahsettik. 3.Var Mısın Yok Musun Oyun Yapımı 4 videoluk var mısın yok musun oyunumuz 4.Football Manager Oyun Yapımı Uzun bir seri olan bu oyunun yapımı halen devam etmektedir. 5.Mayın Tarlası Oyun Yapımı Tek videoda nasıl yapılır açıklayıcı bir şekilde anlattık. 6.Adam Asmaca Oyun Yapımı 7.Uzay Savaşı Oyun Yapımı 2D 8.Araba Yarışı Oyun Yapımı 2D
C# Puan Tablosu Oluşturma
Merhaba arkadaşlar bugün sizlere bir menajer oyununda takımların puan tablosunu ve doğru biçimde sıralamayı nasıl yapacağımızı göstereceğim. Tabi bildiğimiz üzere ligde takımlar puanına göre sıralanıyor eşit olması durumunda ise averaj ve atılan gollere bakılıyor.Bizde bu sisteme göre yapacağız. Öncelikle böyle büyük çaplı bir menajer oyununda classları kullanmamız şarttır. Bize bir "Takım" adında class lazım , hemen oluşturalım. Bu oluşturduğumuz Takım class'ına IComparable interface'ni uygulayalım bu yapının bize verdiği CompareTo komutuyla işlemlerimizi kolaylıkla gerçekleştireceğiz. Eğer isterseniz hazırlamış olduğum football manager youtube serisinide kanalımdan izleyebilirsiniz. https://www.youtube.com/playlist?list=PLw919wW8ikxenpnSTVecZ-oWZjXbPwEDl public class Takim : IComparable { string takim_adi; int Puan; ...
C# ile List İçinde Değer Arama ve Bulma Find ve FindAll Komutu
C# derslerinde koleksiyon yapısı olan List'in dizilerden farklı olarak içindeki bir değeri ya da değer aralığını birden çok değeri arayıp bulmayı sizinle göreceğiz. Find ve FindAll komutlarından yararlanacağız. İsterseniz kendi oluşturmuş olduğunuz bir class değerini de arayabilirsiniz. Referans olarak using System.Collections.Generic; using System.Linq; bu referans kütüphaneler kullanıyoruz. Eğer ekli değilse class dosyamızın en üst satırlarına ekleyebiliriz. List < string > texts = new List < string >(); texts.Add( "RehaStudio" ); Mesela yukarıda bir texts adında List koleksiyonu oluşturduk ve "RehaStudio" adında bir eleman ekledik. string deger = texts .Find( value => value == "RehaStudio" ); Burada list ifademize Find komutunu yazıyoruz ve içine ise bir şart ifadesi girebiliri...
Anlatım için teşekkürler
YanıtlaSil