Yumuşakça Dön
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 43 / 63.
transform.rotation değerini doğrudan yeni bir rotasyona ayarlamak, nesneyi tek bir karede döndürür. Quaternion.RotateTowards(current, goal, maxDegrees), current rotasyonunu goal yönüne doğru en fazla maxDegrees kadar döndürür ve hedefi asla geçmez. Adım olarak turnSpeed * Time.deltaTime kullanıldığında nesne sabit bir hızla döner ve tıpkı MoveTowards konumlarda yaptığı gibi hedefinde tam olarak durur. Bu ayçiçeği güneşi saniyede 30 derece hızla takip eder:
public Transform sun;
public float turnSpeed = 30f;
void Update()
{
Quaternion goal = Quaternion.LookRotation(sun.position - transform.position);
transform.rotation = Quaternion.RotateTowards(transform.rotation, goal, turnSpeed * Time.deltaTime);
}90 derece uzaktaki bir güneş, ayçiçeğinin her biri 30 derece olan 3 saniyede dönmesini sağlar. En kısa yönde döner ve hedef her karede yeniden hesaplandığından hareket eden bir güneşi takip eder.
Quaternion.Slerp(a, b, t), Vector3.Lerp noktalar için neyse, a ile b arasındaki yolun t kadarlık kısmındaki rotasyondur. Update() içinde Slerp(transform.rotation, goal, 5f * Time.deltaTime) şeklinde yazıldığında, her karede kalan açının bir kısmı kadar döner: önce hızlı, hedefe yaklaştıkça giderek daha yavaş; sabit bir hızla dönmez ve hedefe hiçbir zaman tam olarak ulaşmaz. Bu yumuşak geçiş, kamera veya dönen bir kafa için uygundur. Dönüş hızı oyun kuralı olduğunda, örneğin saniyede 60 derece dönen bir top için RotateTowards kullanın.
Görev
OrtaBaykuş, onu işaret ettiğin yöne bakmak için döner. Her ok, bakacağı yeni bir yön verir: yukarı +z, sağ +x, aşağı -z, sol -x. Bir tuşa basıldığında o yöne, saniyede turnSpeed (180) derece hızla, sabit bir hızda dönmeye başlar ve tuş bırakıldıktan sonra da dönüşünü tamamlayarak tam olarak yeni yönde durur.
Play'e bas, ok tuşlarına bas, ardından Check'e bas.
Kendin dene
using UnityEngine;
public class Owl : MonoBehaviour
{
public float turnSpeed = 180f;
void Update()
{
// Yukarı, sağ, aşağı, sol: saniyede turnSpeed derece hızla +z, +x, -z, -x yönlerine dön.
}
}
Bu ders kısa bir quiz içerir. Soruları yanıtlamak ve ilerlemeni kaydetmek için derse başla.
Fizik ve Oynanış bölümündeki tüm dersler
1Rigidbody
Yerçekimi ve KütleAddForce ile İtmeDürtüyle ZıplamaFizik için FixedUpdateHızKinematik CisimlerTekrar: Fırlatma Rampası2Çarpışmalar
OnCollisionEnterNeye Çarptım?Çarpınca KırılYerde DurmakSekme ve SürtünmeCollider ŞekilleriTekrar: Kırılabilir Duvar