Menu
CoddyTech

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.

challenge icon

Görev

Kolay

Robotu tam olarak speed m/s hızla yürüt ve kenardan düşmesine izin ver.

  1. FixedUpdate() içinde float h = Input.GetAxisRaw("Horizontal"); değerini ve "Vertical" için float v değerini oku.
  2. 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

Kendi başına pratik yap: Unity playground