Unity'de karakter Time.deltaTime ile fazla zıplıyor

Iori Yagami

Hectopat
Katılım
29 Ocak 2022
Mesajlar
1.455
Çözümler
3
Daha fazla  
Cinsiyet
Erkek
Arkadaşlar, Unity ile Flappy Bird yaparken çok garip bir hatayla karşılaştım. Karakterin zıplamasını kodladım, test ederken karakterin hep aynı şekilde zıplamadığını gördüm. Karakter bir fazla bir az zıplıyordu. Sonra zıplama kodundaki "Time.deltaTime" komutunu kaldırdım ve sorun düzeldi fakat bu komut olmadan karakter farklı cihazlarda farklı yüksekliklere zıplayacak. Bu sorunu nasıl tam olarak çözebilirim?

Yazdığım kodlar bu şekilde:

 
Son düzenleyen: Moderatör:
O halde jumpForce değişkenini düşürün.

Ayrıca GetKeyUpGetKeyDown yapın. Sonuçta tuşa basıldığı anda çalışacak.
Son olarak 20. satırdaki kod çok gereksiz olmuş. Onu silebilirsiniz.
 
Jumpforce'u SerializeField ile işaretle ve inspector üzerinden değiştirerek gereken zıplama yüksekliğini bul. Platforma göre kısmını ise gereken tanımlarla if else bloğu içerisinde halledersin. if-else kullanmak istemyorsan switch-case ile platforma göre jumpforce degişkenini belirleyip matematiksel işlemi switch-case bloğu sonunda yapabilirsin.
 
Yalnız fizik işlemlerinin FixedUpdate içerisinde yapılmasını öneriyorlar, rigidbody de fizik elemanı sonuçta. Update'i FixedUpdate olarak değiştirip time.deltaTime'ı da time.fixedDeltaTime olarak değiştirmenizi öneririrm. Sorunuza cevap olarak yazmadım ama belirtmek istedim.
 
Ayrıca çok fazla kullanılmamasını da öneriyorlar çünkü oyun optimizasyonunu çok etkiliyor. Flappy Bird için Update yeterli gibi.

Bir oyun yaptıktan sonra optimizasyona sıra geldiğinde ilk iş olarak gereksiz FixedUpdate fonksiyonlarını temizlerim. Oyunu render aldığımda gözle görülen bir fark oluşuyor.
 
Public yerine SerializeField kullandım ama değişen bir şey olmadı maalesef.
Bu arada platforma göre kısmını şimdilik ayarlamadım çünkü ilk önce karakterin düzgün zıplayıp zıplamadığını görmek istedim.
Dediklerinizi yaptım sorun kısmen çözüldü ama bu seferde program space tuşunu ara sıra algılamıyor. Bir yeri düzeltirken ötekini bozdum.
 
Dediklerinizi yaptım sorun kısmen çözüldü ama bu seferde program space tuşunu ara sıra algılamıyor. Bir yeri düzeltirken ötekini bozdum.
Çünkü keyin bırakıldığı anda çalışsın demişsiniz.
Mesajımda belirtmiştim.

Ayrıca zıplama yüksekliğini jumpForce değişkenine atamışsınız. Onu azaltın.
 
Çünkü keyin bırakıldığı anda çalışsın demişsiniz.
Mesajımda belirtmiştim.
Onu "GetKeyDown" değiştirdim ama hala tuşu arada algılamıyor.
Ayrıca zıplama yüksekliğini jumpForce değişkenine atamışsınız. Onu azaltın.
jummpForce'un değerini azaltmama rağmen yine algılanmıyor tuş.

@user.cs bu arada galiba konuyu yanlış anlamışsınız. Sorun karakterin çok zıplaması değil. Diyelim karakter 5 zıplamalı. Tuşa bastığımda karakter bazen 5 bazen ise 10 zıplıyor. Moderatör konu başlığını değiştirince ve ben de yazım yanlışı yapınca böyle bir anlam karşıklığı olmuş olabilir.
 
Son düzenleme:
Bu siteyi kullanmak için çerezler gereklidir. Siteyi kullanmaya devam etmek için çerezleri kabul etmelisiniz. Daha Fazlasını Öğren.…