Unity 3D TR Forum

Orjinalini görmek için tıklayınız: Birden Fazla Objeye Bir Animasyon Eklemek
Şu anda (Arşiv) modunu görüntülemektesiniz. Orjinal Sürümü Görüntüle internal link
Merhabalar, oyunumda karakter altın objesini alınca MoveTowards fonksiyonuyla altın objesini belirlediğim bir noktaya götürüyorum. Belirli noktaya gelince de altını yok ediyorum. Burada şöyle bir sorunla karşılaştım. Bir altını alınca altının hareketinde bir sıkıntı olmuyor. Fakat arka arkaya birden fazla altın alınca yani bir altının hareketi bitmeden diğer altını alınca MoveTowards fonskiyonu düzgün bir şekilde çalışmıyor. Bu sorun yazdığım koddan dolayı böyle. Fakat aklıma başka bir algoritma gelmedi. Tavsiyeleriniz varsa yorum olarak yazarsanız sevinirim. Yazmış olduğum kod aşağıda yer alıyor. NOT : Bu kodun olduğu script dosyası karakterde ekli. Karakter altın objesiyle etkileşime girdiğinde coinAnimBool true oluyor.


Kod:
private void Update()
{
       if (coinAnimBool)
       {
           float step = speed * Time.deltaTime;
           coinObject.transform.position = Vector3.MoveTowards(coinObject.transform.position, target.position, step);

           if (target.position == coinObject.transform.position)
           {
               coinAnimBool = false;
               CoinTextUpdate();
               Destroy(coinObject);
           }
       }
}
Tam olarak sorunu anlamadım fakat animasyonlar genelde o anda objenin bulunduğu konuma göre oynuyor ve static değilse saçmalayabiliyor o yüzden direk animasyon yerine kod'la coin'in hareketini yapabilirsen sorunun ortadan kalkar gibi geliyor.
OnTriggerEnter fonksiyonu işine yarar, bir araştır.
(30-01-2018, Saat: 22:46)TheTudors Nickli Kullanıcıdan Alıntı: Linkleri görüntüleyebilmek için Kayıt ol manız veya Giriş yapmanız gerekiyor.Anlayışınız için teşekkürler.!Tam olarak sorunu anlamadım fakat animasyonlar genelde o anda objenin bulunduğu konuma göre oynuyor ve static değilse saçmalayabiliyor o yüzden direk animasyon yerine kod'la coin'in hareketini yapabilirsen sorunun ortadan kalkar gibi geliyor.

Merhabalar, animasyon derken animator veya animation componentlerini kullanmıyorum. Karakter altını aldığı zaman o altın objesini MoveTowards ile hareket ettiriyorum. Altının hareket kodunu da paylaştım zaten. Ard arda  altın aldığı zaman sıkıntı oluyor. Çünkü 1. altının hareketi bitmeden diğer altının hareketi aktif oluyor. Ve tüm altınlar için tek hareket kodu olduğundan saçmalıyor.

(31-01-2018, Saat: 11:00)No_99 Nickli Kullanıcıdan Alıntı: Linkleri görüntüleyebilmek için Kayıt ol manız veya Giriş yapmanız gerekiyor.Anlayışınız için teşekkürler.!OnTriggerEnter fonksiyonu işine yarar, bir araştır.

OnTriggerEnter2D ile karakter altını aldığı zaman yukarıda paylaştığım if bloğunu aktif ediyorum. İf bloğu da altın objesinin hareketini sağlıyor. Benim sıkıntım birden fazla altını aldığı zaman bu if bloğu düzgün bir şekilde çalışmıyor. Sizlerden istediğim birden fazla objeye aynı kod ile nasıl hareket ettirebilirim. benim yazdığım kod sadece 1 altın aldığı zaman düzgün bir şekilde çalışıyor. Yani 1 altını alıp altın hareketi tamamlandıktan sonra diğer altını alırsa sıkıntı olmuyor. Sorun altın hareketi bitmeden tekrar altın alması.

(30-01-2018, Saat: 22:46)TheTudors Nickli Kullanıcıdan Alıntı: Linkleri görüntüleyebilmek için Kayıt ol manız veya Giriş yapmanız gerekiyor.Anlayışınız için teşekkürler.!Tam olarak sorunu anlamadım fakat animasyonlar genelde o anda objenin bulunduğu konuma göre oynuyor ve static değilse saçmalayabiliyor o yüzden direk animasyon yerine kod'la coin'in hareketini yapabilirsen sorunun ortadan kalkar gibi geliyor.




Sorunumla ilgili bir video çektim. Video da daha iyi bir şekilde anlayabilirsiniz diye umuyorum.
Bu kod coin'in içinde mi? Coinin içine bir script yazarsan daha iyi olur hem bool ile uğraşmana gerek kalmaz. Eğer coin karakter taglı objeye temas ederse (OnColliderEnter2D) bir routine başlat (IENumerator) ve posizyonu target posizyonuna eşit olmadığı sürece routine'i tekrar çalıştır.
(01-02-2018, Saat: 20:03)No_99 Nickli Kullanıcıdan Alıntı: Linkleri görüntüleyebilmek için Kayıt ol manız veya Giriş yapmanız gerekiyor.Anlayışınız için teşekkürler.!Bu kod coin'in içinde mi? Coinin içine bir script yazarsan daha iyi olur hem bool ile uğraşmana gerek kalmaz. Eğer coin karakter taglı objeye temas ederse (OnColliderEnter2D) bir routine başlat (IENumerator) ve posizyonu target posizyonuna eşit olmadığı sürece routine'i tekrar çalıştır.

Tekrardan merhabalar. Yukarıda yazdığım kod Player objesinde yer alıyor. Player, OnTriggerEnter2D ile coin objesine değdiği zaman bool aktif oluyor. Aktif olan bool'da yine player objesinin içindeki Update fonksiyonundaki if bloğunu çalıştırıyor.

Sizin söylediğiniz yönteme gelince : Coin objesine bu kodu eklersem eğer diğer coin objeleri de hareket etmez mi? Çünkü Update fonksiyonundaki blok çalışacak. Bu yüzden if bloğu aktif olduğu an bu koda sahip tüm objeler de hareket eder. Söylediğiniz yöntemi daha denemedim. Bu yöntemi deneyip belki biraz da geliştirip sonucu buradan paylaşırım yine.
Hayır neden öyle olsun, karakter içinden denetleme yapmayacaksın, coin içinden denetleme yapacaksın. Karakteri algılayan coinler hareket edecek sadece
(02-02-2018, Saat: 00:02)No_99 Nickli Kullanıcıdan Alıntı: Linkleri görüntüleyebilmek için Kayıt ol manız veya Giriş yapmanız gerekiyor.Anlayışınız için teşekkürler.!Hayır neden öyle olsun, karakter içinden denetleme yapmayacaksın, coin içinden denetleme yapacaksın. Karakteri algılayan coinler hareket edecek sadece

Yazmış olduğunuzu denedim. Sonuç başarılı. Söylediğiniz yöntemin çalışacağını düşünmemiştim ama yanılmışım. Cevaplarınız için teşekkürler.
Rica ederim, kolay gelsin.