Birlik - Katı cisimler ve Fizik
Son bölümdeki çarpışmalarla ilgili asıl sorun kodla ilgiliydi. We will now modify the values of the GameObject’s position directly. Oyuncu bir tuşa basıyorsa, pozisyona bir değer katıyoruz. Oyuncuyu sınırlara ve diğer GameObject'lere uygun şekilde tepki verecek şekilde hareket ettirmek için bir yola ihtiyacımız var.
Bunu yapmak için ne olduğunu anlamalıyız rigidbodiesvardır. Sert gövdeler, bir GameObject'in aşağıdakilere tepki vermesini sağlayan bileşenlerdir:real-time physics. Bu, kuvvetlere ve yerçekimine, kütleye, sürüklemeye ve momentuma verilen reaksiyonları içerir.
GameObject'inize bir Rigidbody ekleyebilirsiniz. Add Component ve arama alanına Rigidbody2D yazarak.
Rigidbody2D'ye tıklamak, bileşeni GameObject'inize ekleyecektir. Artık eklendiğine göre, birçok yeni alanın açıldığını fark edeceksiniz.
Varsayılan ayarlarla, GameObject dikey olarak düşecek downyerçekimi nedeniyle. Bundan kaçınmak içinGravity Scale 0'a kadar.
Şimdi, oyunu oynamak gözle görülür bir fark göstermeyecek, çünkü GameObject'in henüz fizik bileşeniyle bir ilgisi yok.
Sorunumuzu çözmek için, kodumuzu tekrar açalım ve yeniden yazalım.
public class Movement : MonoBehaviour {
public float speed;
public Rigidbody2D body;
// Update is called once per frame
void Update() {
float h = Input.GetAxisRaw(“Horizontal”);
float v = Input.GetAxisRaw(“Vertical”);
body.velocity = new Vector2(h * speed, v * speed);
}
}
Bir yarattığımızı görebiliriz referencebildirimlerde bir Rigidbody2D'ye ve güncelleme kodumuz Object'in dönüşümü yerine bu referans üzerinde çalışır. Bu, Rigidbody'ye artık hareket etme sorumluluğunun verildiği anlamına gelir.
Bekleyebilirsiniz bodyOna hiçbir şey atamadığımız için NullReferenceException atma referansı. Oyunu olduğu gibi derler ve çalıştırırsanız, editörün sol alt kısmında aşağıdaki hatayı alırsınız.
Bunu düzeltmek için, betik tarafından oluşturulan bileşeni ele alalım. Unity'de, hız değişkeninde yaptığımız gibi, kamu mülklerinin kendi alanlarını oluşturduğunu unutmayın.
Hızı 5 gibi daha yüksek bir değere ayarlayın ve oyunu oynayın.
Çarpışmalarınız artık doğru şekilde çalışacak!