Çözüldü Unity'de koşma animasyonundan sonra karakter zıplayınca koşmaya devam etmiyor

Bu konu çözüldü olarak işaretlenmiştir. Çözülmediğini düşünüyorsanız konuyu rapor edebilirsiniz.

KendineCoderr

Picopat
Katılım
7 Haziran 2022
Mesajlar
36
Çözümler
1
Daha fazla  
Cinsiyet
Kadın
Unity'de animasyonları sorunsuz bir şekilde ekledim ve çalışıyorlar, idle koymadım çünkü karakterim oyun başlar başlamaz koşmak zorunda bu yüzden de direkt olarak koşma animasyonunu attım ve zıplama animasyonu ile birleştirdim. Koşma animasyonundan sonra karakter zıpladıktan sonra koşma animasyonuna geri dönmüyor; zıplama animasyonunda donmuş gibi ilerliyor. Bu sorunu nasıl çözebilirim?
 
Çözüm
En basitinden şöyle bir şey yapabilirsiniz.
Kod:
public bool ziplamaCagirildi="false";
//Çalışırken tekrar çağırılmaması için.
if(ziplamaCagirildi=="false"){
   StartCoroutine(ziplamaAnimZamanlayicisi(ziplamaSureOlcegiFloat)
   }
//ziplamaSureOlcegiFloat yerine 1f,   0.3f gibi doğru süreyi bulup yazın.
 
   //Bununla ziplama animasyonunu çağir.
 
 
   //Ziplama Anim Zamanlayicisi
    IEnumerator ziplamaAnimZamanlayicisi(float time)
    {
    ziplamaCagirildi=="true";
    anim.SetBool("Jump", true); //Ziplama Animasyonu
    anim.SetBool("Running" false);
    yield return new WaitForSeconds(time); //Ziplama suresi kadar Bekle
    anim.SetBool("Jump", false);//Kosma animasyonu
    anim.SetBool("Running" true);
    ziplamaCagirildi=="false";
    }
Deneyeceğim
Çözdüm arkadaşlar. Platforma tag verdim ve Yerde olup olmadığına dair sorgulama kodu yazdım. Yerdeyse animasyondan çıkıyor zıpladığında animasyon çalışıyor
İsteyen olursa kodları paylaşabilirim
Tamam, sayfayı yenileyince çıktı, bakıyorum. Bool değerlerini ikisini birden aynı anda değiştirin. Birini False yaparken öbürü True olsun her zaman.
Kod:
anim.SetBool("Jump", true);
anim.SetBool("Running" false);

Aynı şekilde kapatırkende tersini yapın.

anim.SetBool("Jump", false);
anim.SetBool("Running" true);
 
Son düzenleme:
Tamam, sayfayı yenileyince çıktı, bakıyorum. Bool değerlerini ikisini birden aynı anda değiştirin. Birini False yaparken öbürü True olsun her zaman.
En başından beri bu şekilde zıplma ilkinde true ikincisinde false, running'i çalıştırmadığı için onu da koyup true yapmıştım altta kalmış o yüzden
 

Dosya Ekleri

  • truefalseayar.png
    truefalseayar.png
    160,9 KB · Görüntüleme: 42
Tamam, sayfayı yenileyince çıktı, bakıyorum. Bool değerlerini ikisini birden aynı anda değiştirin. Birini False yaparken öbürü True olsun her zaman.
Kod:
anim.SetBool("Jump", true);
anim.SetBool("Running" false);

aynı şekilde kapatırkende tersini yapın.

anim.SetBool("Jump", false);
anim.SetBool("Running" true);
kodlarınızı yeni gördüm. Bunu if else kodlarının içine yazacağım değil mi?
 
Örnek kod onlar. Mesela üstteki zıplarken animasyon geçişini sağlamak için yazılması gereken. Alttaki ise zıplama işlemi bittikten sonra yeniden koşma animasyonuna dönmek için yazılması gereken kod. Animasyon süresini nasıl hallettiniz peki?
Bu şartlar altında çok hızlı geçeceğinden yine çalışmayacak gibime geliyor. Animasyonun bitmesini beklemesi gerekli, geçmesi için ya da yerlere Tag ekleyebilirsiniz OnTriggerEnter'de animasyonu zıplamadan koşmaya çekmesi için.
 
Son düzenleme:
Örnek kod onlar. Mesela üstteki zıplarken animasyon geçişini sağlamak için yazılması gereken. Alttaki ise zıplama işlemi bittikten sonra yeniden koşma animasyonuna dönmek için yazılması gereken kod. Animasyon süresini nasıl hallettiniz peki?
Bu şartlar altında çok hızlı geçeceğinden yine çalışmayacak gibime geliyor. Animasyonun bitmesini beklemesi gerekli, geçmesi için ya da yerlere Tag ekleyebilirsiniz OnTriggerEnter'de animasyonu zıplamadan koşmaya çekmesi için.
animasyonları mixamo'dan aldığım için süreleri gayet güzel çok hızlı ilerlemiyor. İlk Unity oyunum olduğu için öğrenmek amaçlı yapıyorum biraz da o yüzden yerelere tag ekleyebilirsiniz derken nasıl yapacağım onu?
 
Animasyonları Mixamo'dan aldığım için süreleri gayet güzel çok hızlı ilerlemiyor. İlk Unity oyunum olduğu için öğrenmek amaçlı yapıyorum biraz da o yüzden yerelere tag ekleyebilirsiniz derken nasıl yapacağım onu?
En basitinden şöyle bir şey yapabilirsiniz.
Kod:
private bool ziplamaCagirildi="false";
[SerializeField] //private olan alttaki değeri editörde göster
private float ziplamaSureOlcegiFloat=1f;
//Çalışırken tekrar çağırılmaması için.


//Bununla ziplama animasyonunu çağir.
if(ziplamaCagirildi=="false"){
   StartCoroutine(ziplamaAnimZamanlayicisi(ziplamaSureOlcegiFloat)}

//ziplamaSureOlcegiFloat yerine 1f,   0.3f gibi doğru süreyi bulup yazın.
 
   //Ziplama Anim Zamanlayicisi
    IEnumerator ziplamaAnimZamanlayicisi(float time)
    {
    ziplamaCagirildi=="true";
    anim.SetBool("Jump", true); //Ziplama Animasyonu
    anim.SetBool("Running" false);
    yield return new WaitForSeconds(time); //Ziplama suresi kadar Bekle
    anim.SetBool("Jump", false);//Kosma animasyonu
    anim.SetBool("Running" true);
    ziplamaCagirildi=="false";
    }
 
Son düzenleme:
En basitinden şöyle bir şey yapabilirsiniz.
Kod:
public bool ziplamaCagirildi="false";
//Çalışırken tekrar çağırılmaması için.
if(ziplamaCagirildi=="false"){
   StartCoroutine(ziplamaAnimZamanlayicisi(ziplamaSureOlcegiFloat)
   }
//ziplamaSureOlcegiFloat yerine 1f,   0.3f gibi doğru süreyi bulup yazın.
 
   //Bununla ziplama animasyonunu çağir.
 
 
   //Ziplama Anim Zamanlayicisi
    IEnumerator ziplamaAnimZamanlayicisi(float time)
    {
    ziplamaCagirildi=="true";
    anim.SetBool("Jump", true); //Ziplama Animasyonu
    anim.SetBool("Running" false);
    yield return new WaitForSeconds(time); //Ziplama suresi kadar Bekle
    anim.SetBool("Jump", false);//Kosma animasyonu
    anim.SetBool("Running" true);
    ziplamaCagirildi=="false";
    }
Deneyeceğim
Çözdüm arkadaşlar. Platforma tag verdim ve Yerde olup olmadığına dair sorgulama kodu yazdım. Yerdeyse animasyondan çıkıyor zıpladığında animasyon çalışıyor
İsteyen olursa kodları paylaşabilirim
 
Son düzenleme:
Çözüm

Technopat Haberler

Yeni konular

Geri
Yukarı