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.
Görev
KolaySürtünmesiz pistte diski kuvvetlerle hareket ettir.
FixedUpdate()içindefloat h = Input.GetAxis("Horizontal");vefloat v = Input.GetAxis("Vertical");değerlerini oku.Time.deltaTimekullanmadanrb.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
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