Unity - Rigidbodies dan Fisika

Masalah utama dengan tabrakan di bab terakhir adalah dengan kode. We will now modify the values of the GameObject’s position directly. Kami hanya menambahkan nilai ke posisi, jika pemain menekan tombol. Kami membutuhkan cara untuk membuat pemain bergerak sedemikian rupa sehingga ia bereaksi dengan baik terhadap batasan dan GameObject lainnya.

Untuk melakukannya, kita perlu memahami apa rigidbodiesadalah. Rigidbodies adalah komponen yang memungkinkan GameObject bereaksireal-time physics. Ini termasuk reaksi terhadap gaya dan gravitasi, massa, gaya hambat dan momentum.

Anda dapat memasang Rigidbody ke GameObject Anda hanya dengan mengklik Add Component dan mengetik Rigidbody2D di bidang pencarian.

Mengklik Rigidbody2D akan memasang komponen ke GameObject Anda. Sekarang setelah terpasang, Anda akan melihat bahwa banyak bidang baru telah terbuka.

Dengan pengaturan default, GameObject akan jatuh secara vertikal downkarena gravitasi. Untuk menghindarinya, setelGravity Scale menjadi 0.

Sekarang, bermain game tidak akan menunjukkan perbedaan yang terlihat, karena GameObject belum ada hubungannya dengan komponen fisiknya.

Untuk mengatasi masalah kita, mari kita buka kode kita lagi, dan tulis ulang.

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);
   }
}

Kita dapat melihat bahwa kita membuat file referenceke Rigidbody2D dalam deklarasi, dan kode pembaruan kami bekerja pada referensi itu alih-alih transformasi Objek. Ini berarti bahwa Rigidbody sekarang diberi tanggung jawab untuk bergerak.

Anda mungkin mengharapkan bodyreferensi untuk melempar NullReferenceException, karena kita belum menetapkan apa pun padanya. Jika Anda mengkompilasi dan menjalankan gim apa adanya, Anda akan mendapatkan kesalahan berikut di kiri bawah editor

Untuk memperbaikinya, mari kita pertimbangkan komponen yang dibuat oleh skrip. Ingatlah bahwa properti publik membuat bidangnya sendiri di Unity, seperti yang kita lakukan dengan variabel kecepatan.

Sesuaikan kecepatan ke nilai yang lebih tinggi, sekitar 5, dan mainkan gamenya.

Tabrakan Anda sekarang akan bekerja dengan benar!