Menu
CoddyTech

AddForce ile İtme

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

Bir nesnede Rigidbody varsa, fizik onu hareket ettirir; bu yüzden konumunu değiştirmeyi bırakıp onun yerine itersin. rb.AddForce(force), cisme newton cinsinden bir kuvvet olan Vector3 ile itme uygular. Kuvvet hızı ayarlamaz: kuvveti eklemeye devam ettiğin sürece cismi her saniye kuvvetin kütleye bölümü kadar hızlandırır. İtmeyi bırakınca cisim sahip olduğu hızı korur.

Bu hovercraft (2 kg) bir iticiye sahiptir: yukarı ok basılı tutulurken thrust değerindeki bir kuvvet onu +z boyunca ileri iter. İtme kuvveti 12 olduğunda, her saniye 12 / 2 = 6 m/s hız kazanır:

public float thrust = 12f;
private Rigidbody rb;

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

void FixedUpdate()
{
    if (Input.GetKey(KeyCode.UpArrow))
    {
        rb.AddForce(Vector3.forward * thrust);
    }
}

Kuvvetler FixedUpdate() içinde uygulanır; Unity bu metodu her fizik adımından önce saniyede 50 kez çağırır (4. ders bunun nedenini açıklar). Satırda Time.deltaTime yoktur: AddForce kuvveti adım boyunca zaten dağıtır ve Time.deltaTime ile çarpmak itmeyi 50 kat zayıflatır. Zeminde sürtünme ters yönde kuvvet uygular; bu nedenle küçük bir kuvvet ağır bir kutuyu hiç hareket ettirmeyebilir.

challenge icon

Görev

Kolay

Sürtünmesiz pistte diski kuvvetlerle hareket ettir.

  1. FixedUpdate() içinde float h = Input.GetAxis("Horizontal"); ve float v = Input.GetAxis("Vertical"); değerlerini oku.
  2. Time.deltaTime kullanmadan rb.AddForce(new Vector3(h, 0, v) * push); çağrısını yap.

“Oyna” düğmesine bas, diski it ve bırak: disk kaymaya devam eder. Ardından “Kontrol et” düğmesine bas.

Kendin dene

using UnityEngine;

public class PuckPusher : MonoBehaviour
{
    public float push = 4f;
    private Rigidbody rb;

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

    void FixedUpdate()
    {
        // Diski it: Horizontal x ekseni boyunca, Vertical z ekseni boyunca
    }
}

Fizik ve Oynanış bölümündeki tüm dersler

Kendi başına pratik yap: Unity playground