Menu
CoddyTech

Hız

Coddy'nin Unity Journey'sinin Fizik ve Oynanış bölümünün bir parçası. Ders 5 / 63.

rb.linearVelocity, cismin şu anda nasıl hareket ettiğini gösterir: x, y ve z boyunca saniyede metre cinsinden bir Vector3. Bunu okumak cismin hangi yöne gittiğini söyler; rb.linearVelocity.magnitude ise hızıdır. Bunu ayarlamak, ivmelenme olmadan ve kütle hesaba katılmadan hareketi hemen değiştirir: 2 m/s hızına ayarlanan 1 kg'lık bir kutu ile 50 kg'lık bir kasa, 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 cisme etki etmeye devam eder.

Bu go-kart tam olarak cruise m/s hızla ileri gider. Hızı kopyalar, yalnızca z değerini değiştirip geri 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ızla ileri
    rb.linearVelocity = vel;   // y, yerçekiminin verdiği değeri korur
}

y değerini de 0'a ayarlamak, her adımda yer çekiminin kazandırdığı hızı silerdi ve 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ıldığını görebilirsin: Unity 6'da derlenir, ancak velocity özelliğinin kullanımdan kaldırıldığı ve adının linearVelocity olarak değiştirildiği uyarısını verir. drag de aynı şekilde linearDamping oldu. Yeni adları kullan.

challenge icon

Görev

Kolay

Robot yükseltilmiş bir platformda yürüyor. Ok tuşlarıyla onu tam olarak speed m/s hızında yürütün (Inspector'da 3): x ekseninde sağa ve sola, z ekseninde ileri ve geri; yumuşatma olmaması için ham eksenleri kullanın.

  • Hiçbir ok tuşuna basılmadığında hemen hareketsiz kalır.
  • Yer çekimi etkisini sürdürür: kenardan yürüyüp düşen robot, aşağıdaki zemine düşer.

Play'e basın ve robotu kenardan yürütün, ardından Check'e basın.

Kendin dene

using UnityEngine;

public class RobotWalk : MonoBehaviour
{
    public float speed = 3f;
    private Rigidbody rb;

    void Start()
    {
        rb = GetComponent<Rigidbody>();
    }

    void FixedUpdate()
    {
        // Ok tuşlarıyla tam olarak speed hızında yürü, yerçekiminin y değerini koru
    }
}
quiz iconKendini test et

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