Unity Unity'de hangi hareket sistemi kullanılmalı?

1LoLCu1

Hectopat
Katılım
31 Aralık 2020
Mesajlar
212
Çözümler
1
Daha fazla  
Cinsiyet
Erkek
Oyunum için CS2'de olan "bunnyhop" tarzı bir sistemi eklemek istiyorum. Rigidbody mi charactercontroler mı kullanmalıyım? Avantajları dezavantajları neler olur?
 
Oyunum için CS2'de olan "bunnyhop" tarzı bir sistemi eklemek istiyorum. Rigidbody mi charactercontroler mı kullanmalıyım? Avantajları dezavantajları neler olur?
Hocam bunnyhop gibi momentum ve hızın önemli olduğu bir sistem istiyorsan Rigidbody kullanman daha mantıklı olur. Çünkü hızlanma, ivme, momentum gibi olayları doğal bir şekilde yönetebiliyorsun. Tek dezavantajı, biraz daha fazla uğraştırması ve ayar gerektirmesi.
CharacterController işini kolaylaştırır, çarpışma ve zemin temasını kendisi halleder ama fiziksel his neredeyse yok. Bu yüzden CS2 tarzı bir hareket hedefliyorsan hocam, Rigidbody ile başlaman daha doğru seçim olur.
Bir de ufak ipucu vereyim hocam Rigidbody kullanırken drag değerini çok yüksek tutma, yoksa hız hemen kaybolur. Yerde friction’ı düşük, havada sıfıra yakın tutarsan daha akıcı bir bunnyhop elde edersin.
 
Hocam bunnyhop gibi momentum ve hızın önemli olduğu bir sistem istiyorsan Rigidbody kullanman daha mantıklı olur. Çünkü hızlanma, ivme, momentum gibi olayları doğal bir şekilde yönetebiliyorsun. Tek dezavantajı, biraz daha fazla uğraştırması ve ayar gerektirmesi.
CharacterController işini kolaylaştırır, çarpışma ve zemin temasını kendisi halleder ama fiziksel his neredeyse yok. Bu yüzden CS2 tarzı bir hareket hedefliyorsan hocam, Rigidbody ile başlaman daha doğru seçim olur.
Bir de ufak ipucu vereyim hocam Rigidbody kullanırken drag değerini çok yüksek tutma, yoksa hız hemen kaybolur. Yerde friction’ı düşük, havada sıfıra yakın tutarsan daha akıcı bir bunnyhop elde edersin.


C#:
    void Update()
    {
        Vector2 look = lookAction.ReadValue<Vector2>(); // mouse delta
        yaw   += look.x * mouseSensitivity;
        pitch -= look.y * mouseSensitivity;
        pitch  = Mathf.Clamp(pitch, minPitch, maxPitch);
        transform.rotation = Quaternion.Euler(0f, yaw, 0f);
        if (cameraTransform != null)
        {
            cameraTransform.position = transform.position + headOffset;
            cameraTransform.rotation = Quaternion.Euler(pitch, yaw, 0f);
        }
    }
Böyle bir kamera takip sistemi yazdıma karakter harket ederken zıplarken etraf dona dona haraket ediyormuş gibi oluyor. Sebebi neden olabilir?
 
C#:
    void Update()
    {
        Vector2 look = lookAction.ReadValue<Vector2>(); // mouse delta
        yaw   += look.x * mouseSensitivity;
        pitch -= look.y * mouseSensitivity;
        pitch  = Mathf.Clamp(pitch, minPitch, maxPitch);
        transform.rotation = Quaternion.Euler(0f, yaw, 0f);
        if (cameraTransform != null)
        {
            cameraTransform.position = transform.position + headOffset;
            cameraTransform.rotation = Quaternion.Euler(pitch, yaw, 0f);
        }
    }
Böyle bir kamera takip sistemi yazdıma karakter harket ederken zıplarken etraf dona dona haraket ediyormuş gibi oluyor. Sebebi neden olabilir?
Hocam merhaba, senin sorunun karakter hareket ederken kameranın etrafında dönüyormuş gibi görünmesinin nedeni, kamerayı doğrudan dünya koordinatlarına göre döndürmen. Bu yüzden karakter zıpladığında veya hareket ettiğinde kamera da serbest şekilde hareket ediyor ve sallanıyormuş hissi oluşuyor.
Birkaç önerim vardır hocam Kamerayı karakterin child’ı yapıp sadece yukarı-aşağı bakışa izin vermek, karakterin baş pozisyonuna bir pivot ekleyip kamerayı onun child’ı yapmak veya kamera güncellemelerini LateUpdate() içinde yapmak. Böylece hem zıplarken hem hareket ederken kamera daha stabil olur.Yani yine olmazsa örnek bir kod hazırlayabilirim.
 

Technopat Haberler

Geri
Yukarı