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.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.
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);
}
}
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.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); } }
Bu sitenin çalışmasını sağlamak için gerekli çerezleri ve deneyiminizi iyileştirmek için isteğe bağlı çerezleri kullanıyoruz.