Selamun aleykum, yine takıldığım bir nokta var kaç gündür uğraşıyorum. Bir progress bar var (slider) bunun değerini yumuşakça artırmak istiyorum. Pat pat diye değil de pürüzsüzce artmalı.
Mathf.lerp istediğim gibi çalışmıyor nedense. En basit haliyle istediğim şu, A sayısına B sayısını eklicem ve pat diye aniden değil de tek tek artarak hızlıca gidecek.
Ayrıca bu işlemleri mümkünse upload dışında halletmem lazım.
Netteki bütün videoları tek tek denedim. Projeye adapte edemiyorum bir yerden patlak veriyor sürekli. O yüzden yukarıdaki iki meseleyi nasıl çözebilirim?
Edit: konuyu basitleştirmek adına. 0 sayısını yumuşak şekilde 75 sayısına kadar artırmak istiyorum. Tabi bunu float değil de int olarak yapmam gerekiyor. Neyi neyle carpmam gerekiyor anlamış değilim.
Mathf.Lerp(0,75, 2f* Time.deltaTime);
Burada eksik olan nedir? 75 i float yapıp sonucu inte dönüştürucem galiba da. Ama bu kodu aynen yazarsam sayı bir yerde sabit kalıyor artmıyor
C# yumuşak artış - sayıyı yavaşça artırma (unity)
8
●96
- 09-06-2020, 12:35:42Merhabalar,
Sayısını arttıracağınız değişkeni time.deltatime ile çarpmayı deneyin. Zamana bağlı olarak artacaktır. Ayrıca progres bar artışı yapıyorsanız, youtube da bununla ilgili çok güzel temiz kaynaklar mevcut. Biraz daha detaylı araştırmanızı öneririm.
Iyi forumlar. - 09-06-2020, 12:56:34Hocam bütün videoları tek tek denedim günlerdir. Tam olarak istediğim sonucu vermiyor. Time.deltatime ile çarpıyorum sayı 0 dan 100 e gelsin şeklinde yaptım testleri. 4-5 arasında gidip geliyor mesela. Kodu birebir yazsam bile olmuyor. Oyunda kullanacağım mantık biraz daha farklı o yüzden işin özünü kavrayamadim.Orkuneka adlı üyeden alıntı: mesajı görüntüle
İenumerator e de bakıyorum hocam bir kaç gündür ama performans için tavsiye edilmiyor. Update içinde calistiramadim o yüzden o aşamaya daha gecemedim.Nmx adlı üyeden alıntı: mesajı görüntüle
Sistem level atlama üzerine olacak.exp eklenince Bar yavaşça dolacak exp fazlaysa level atlayıp slider başa dönecek. Çok fazla kontrol var işler karıştı biraz. Ama yumuşak artış bir türlü olmuyor sabit bir iki sayıda dönüp duruyor - 09-06-2020, 13:03:40ienumarator işinizi görür. Exp. eklendiği yerde bar hareketi için başlatma komutu vereceksiniz.mfa95 adlı üyeden alıntı: mesajı görüntüle
İşlem tamamlanınca başlatma komutununu durduracaksınız. - 09-06-2020, 13:10:31Yumuşak artırmayı cozunce tekrar denicem inslalah hocam.Seyit25 adlı üyeden alıntı: mesajı görüntüle
Mesela 2 int değişkenim var.
Matfh.Lerp(0,75,2f *Time.deltaTime);
0 dan 75 e yumuşak bir şekilde artsın istiyorum. Ayrıca float değil int olmalı çünkü floatta tam oturmuyor.
Bunu en akıllıca şekilde nasıl yapabilirim? Ne eksik anlamadım. Yabancı videolarda zamanla çarpıp bölüp bir şeyler yapıyorlar da mantığı oturmadı - 09-06-2020, 13:43:35deneme bir gameobject;
a=0;
b=75;
bool bar_doldur=false;
void Update () {
if (bar_doldur){
a =Mathf.Round(Mathf.Lerp(a, b, 3f*Time.deltaTime));
deneme.GetComponent<RectTransform>().SetSizeWithCu rrentAnchors(RectTransform.Axis.Horizontal, a);
if (a >=72) {
a = 75;
bar_doldur=false;}
}
}
round değerinizi tamsayıya yuvarlar.
tam 75 yapmak için if koyarsınız örneğin.
bir değişkenle kodunuzu sürekli çalıştırmazsınız(bar_doldur gibi)
Kısaca böyle birşey yapabilirsiniz. - 09-06-2020, 13:52:11Hocam işte buna benzer kodlar deniyordum hep. Ama mesela sizin verdiğiniz örnekte. 0 dan 75 e kadar çık diyoruz. Ama a 70 olunca duruyor 75 olmuyor. Buradaki sorun nedirSeyit25 adlı üyeden alıntı: mesajı görüntüle