Hız
Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 5 / 71.
rb.linearVelocity, cismin şu anda nasıl hareket ettiğini gösterir: x, y ve z eksenleri boyunca saniyede metre cinsinden bir Vector3. Bu değeri okumak, cismin hangi yöne gittiğini söyler; rb.linearVelocity.magnitude ise hızını verir. Bu değeri ayarlamak, hızlanma süreci olmadan ve kütle hesaba katılmadan hareketi anında değiştirir: 2 m/s'ye ayarlanan 1 kg'lık bir kutu da 50 kg'lık bir kasa da bir sonraki fizik adımından itibaren tam olarak 2 m/s hızla hareket eder. Yer çekimi, sürtünme ve çarpışmalar sonrasında da cismi etkilemeye devam eder.
Bu go-kart, tam olarak cruise m/s hızla ileri gider. Hızı kopyalar, yalnızca z değerini değiştirir ve tekrar atar; böylece yer çekiminin verdiği y değeri korunur ve kart rampanın sonundan düşmeye devam eder:
void FixedUpdate()
{
Vector3 vel = rb.linearVelocity;
vel.z = cruise; // tam olarak cruise m/s hızında ileriye
rb.linearVelocity = vel; // y, yerçekiminin ona verdiği değeri korur
}y değerini de 0'a ayarlamak, her adımda yer çekiminin kazandırdığı hızı silerdi; böylece kart düşmek yerine rampadan aşağı doğru süzülürdü. Unity 6'dan önce bu özelliğin adı velocity idi. Eski eğitimlerde hâlâ rb.velocity yazılır: Unity 6'da bu kod derlenir, ancak velocity özelliğinin artık kullanılmadığı ve adının linearVelocity olarak değiştirildiği konusunda bir uyarı verir. drag de aynı şekilde linearDamping oldu. Yeni adları kullanın.
Görev
KolayRobotu tam olarak speed m/s hızla yürüt ve kenardan düşmesine izin ver.
FixedUpdate()içindefloat h = Input.GetAxisRaw("Horizontal");değerini ve"Vertical"içinfloat vdeğerini oku.- Yerçekiminin y değerini koruyarak
rb.linearVelocity = new Vector3(h * speed, rb.linearVelocity.y, v * speed);ayarla.
“Oyna”ya bas ve kenardan yürü: tuşu bıraktığında robot durur ve düşer. Ardından “Kontrol et”e bas.
Kendin dene
using UnityEngine;
public class RobotWalk : MonoBehaviour
{
public float speed = 3f;
private Rigidbody rb;
void Start()
{
rb = GetComponent<Rigidbody>();
}
void FixedUpdate()
{
// Yerçekiminin y değerini koruyarak ok tuşlarıyla tam olarak speed hızında yürü
}
}
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 DuvarKendi başına pratik yap: Unity playground