Son kullanma tarihi geçmiş, bayatlamış bir tarayıcı kullanıyorsanız, Mercedes kullanmak yerine tosbağaya binmek gibi... Web sitelerini düzgün görüntüleyemiyorsanız eh, bi' zahmet tarayıcınızı güncelleyiniz. Modern Web standartlarını karşılayan bir tarayıcı alternatifine göz atın.
ÇözüldüUnity'de karakterin yönlendirmesi nasıl kısıtlanır?
Basit bir ateş etme oyunu yaptım. Space tuşuna basınca kutucukları vuruyoruz. Bizim oynadığımız karakter sağa sola yukarı aşağıya dönebiliyor. Ben sınırlama getirmek istiyorum mesela X yönünde -45 ile +45 arasında bir değer alsın daha fazla dönmesin nasıl bir kod yazmalıyım? Eğer yardımcı olursanız çok mutlu olurum.
Basit bir ateş etme oyunu yaptım. Space tuşuna basınca kutucukları vuruyoruz. Bizim oynadığımız karakter sağa sola yukarı aşağıya dönebiliyor. Ben sınırlama getirmek istiyorum mesela X yönünde -45 ile +45 arasında bir değer alsın daha fazla dönmesin nasıl bir kod yazmalıyım? Eğer yardımcı olursanız çok mutlu olurum.
Mathf.Clamp() fonksiyonu ile her döndüğünde kontrol ederek kısıtlayabilirsiniz. Yani x karakterin x rotasyonu olarak kabul edilirse şu şekilde: x = Mathf.Clamp(x, -45f, 45f)
Hocam vaktinizi ayırıp ilgilendiğiniz için çok teşekkür ederim ama hala istediğim gibi sonuca ulaşamadım.İlk kendi yazmış olduğum kodda dönüşlerde herhangi bir problem yaşamıyordum.Sadece sınırlama sıkıntım vardı.Ama sizin vermiş olduğunuz kodu aynen şu şekilde yazdım.
float yrotator(float rot, float min, float max)
{
float getrotatey = rot;
if (Input.GetKey(KeyCode.A))
{
getrotatey += rotatevalue;
}
else if (Input.GetKey(KeyCode.D))
{
getrotatey -= rotatevalue;
}
return Mathf.Clamp(getrotatey, min, max);
}
void Update()
{
Xrotation = xrotator(Xrotation,-20f,20f);
Yrotation = yrotator(Yrotation, -40f, 40f);
namlu.rotation = Quaternion.Euler(Xrotation,namlu.rotation.y,namlu.rotation.z);
oyuncu.rotation = Quaternion.Euler(oyuncu.rotation.x,Yrotation, oyuncu.rotation.z);
}
Bu kod ile dönüşlerde şöyle bi sıkıntım var.
Oyuncu objem sağa ve sola hareket edicek ama namlu objem bu hareketlerden etkilenmeyecek.Oda sadece yukarı ve aşağı hareket edicek.Yukarı ve aşağı sorunsuz çalışıyor ama sağa sola dönünce namluda kendi sağa ve sola dönüyor.Dün yazmış olduğunuz kodu defalarca inceledim neden iki obje birden dönüyo diye ama bulamadım.Sizce neden ikiside dönüyor olabilir?
Tamamdır hocam hallettim.
namlu.rotation = Quaternion.Euler(Xrotation,Yrotation,0);
oyuncu.rotation = Quaternion.Euler(0,Yrotation, 0);
Böyle yazdığım zaman ilk kodumun halini aldı.
Çok sağolun hocam.