• Tidak ada hasil yang ditemukan

MEMOLES SKRIP YANG SUDAH JADI

Dalam dokumen Membuat Video Game Dengan 3D Unity (Halaman 105-109)

MEMULAI DEMO 3D DENGAN CODING DAN MENAMBAHKAN FISIKA

3.9 MEMOLES SKRIP YANG SUDAH JADI

Gunakan metode RequireComponent() untuk memastikan bahwa komponen lain yang diperlukan oleh skrip juga dilampirkan. Terkadang komponen lain bersifat opsional (yaitu, kode yang mengatakan "Jika komponen lain ini juga dilampirkan, maka ..."), tetapi terkadang Anda ingin membuat komponen lain menjadi wajib. Tambahkan metode ke bagian atas skrip untuk menerapkan ketergantungan itu dan berikan komponen yang diperlukan sebagai parameter.

Demikian pula, jika Anda menambahkan metode AddComponentMenu() ke atas skrip Anda, skrip itu akan ditambahkan ke menu komponen di editor Unity. Beri tahu perintah nama item menu yang ingin Anda tambahkan, lalu skrip dapat dipilih saat Anda mengklik Tambahkan Komponen di bagian bawah Inspector. Berguna!

Skrip dengan kedua metode ditambahkan ke atas akan terlihat seperti ini:

using UnityEngine; using System.Collections;

[RequireComponent(typeof(CharacterController))]

[AddComponentMenu("Control Script/FPS Input")]

public class FPSInput : MonoBehaviour { ...

gerakan terbang dengan mengatur Gravity ke 0 di Inspector.

Daftar Skrip Input FPS yang sudah selesai using UnityEngine; using System.Collections;

[RequireComponent(typeof(CharacterController))] [AddComponentMenu("Control Script/FPS Input")] public class FPSInput : MonoBehaviour { public float speed = 6.0f; public float gravity = -9.8f;

private CharacterController charController;

void Start() { charController = GetComponent<CharacterController>();

}

void Update() { float deltaX = Input.GetAxis("Horizontal") speed; float deltaZ = Input.GetAxis("Vertical") speed; Vector3 movement = new Vector3(deltaX, 0, deltaZ);

movement = Vector3.ClampMagnitude(movement, speed);

movement.y = gravity;

movement *= Time.deltaTime; movement =

transform.TransformDirection(movement); _charController.Move(movement);

} }

Selamat membangun proyek 3D ini! Kami membahas banyak hal dalam bab ini, dan sekarang Anda sudah berpengalaman tentang cara membuat kode gerakan di Unity.

Semenarik demo pertama ini, ini masih jauh dari menjadi game yang lengkap. Lagi pula, rencana proyek menggambarkan ini sebagai scene FPS dasar, dan apa itu penembak jika Anda tidak bisa menembak? Jadi beri diri Anda tepukan yang layak untuk proyek bab ini, dan kemudian bersiaplah untuk langkah berikutnya.

Jadi, kami memiliki sprite ubin yang memiliki pola berumput, dan untuk sedikit mencampuradukkannya, saya juga membuat sprite untuk mewakili tanah di bawah rumput, sehingga saya bisa sedikit lebih kreatif dengan desain level saya.

Gambar 3.27 Beberapa ubin baru saja siap untuk dinaiki!

Saya membuat sprite kotoran kedua dengan cara yang sama persis seperti yang pertama dan kemudian menyalinnya di mana pun saya membutuhkan tanah di bawah permukaan rumput saya. Anda dapat melakukan hal yang sama—ingatlah untuk menahan Ctrl

untuk menjaga jarak tetap sempurna menggunakan fitur snap to grid. Sekarang kita akan melakukan sesuatu yang lebih menarik: buat karakter game dan jatuhkan dia ke dunia kita.

Untuk memulainya, kita akan membuat sprite karakter paling sederhana yang kita bisa, yang akan menjadi kotak lain. Untuk membuat segalanya sedikit lebih menarik, kami juga akan memberinya mata. Temui Squarey.

Gambar 3.27 Squarey, sobat, kamu tidak terlihat begitu baik

Persegi dapat menjadi ukuran apa pun yang Anda suka, tetapi untuk kesederhanaan saya sarankan menjaga dimensi yang sama seperti yang Anda gunakan untuk ubin tanah.

Sekarang tambahkan Squarey ke folder Sprite Anda seperti yang Anda lakukan dengan yang lain. Pastikan Anda ingat untuk mengatur Pixels Per Unit ke 50 lagi dan kemudian drag dia ke scene Anda. Beri nama Game Object Player baru ini dan pisahkan dari folder Squares. Tidak masalah di level mana Anda ingin menyeretnya, tetapi saya memilih untuk menempatkannya di puncak bukit yang saya buat.

Gambar 3.28 Squarey mensurvei domainnya

Selamat! Anda sekarang memiliki karakter utama. Masalahnya, dia sebenarnya belum melakukan apa-apa. Jadi, hal selanjutnya yang ingin kita lakukan adalah menerapkan beberapa fisika sehingga gravitasi dan hal-hal lain akan mempengaruhi karakter kita. Dan Anda tidak akan percaya betapa mudahnya Unity membuat ini sedikit.

Menggunakan RigidBody 2D

Seperti yang telah disebutkan, inti dari penggunaan mesin fisika seperti Unity adalah agar kita dapat mengakses skrip dan elemen yang sudah jadi untuk menghindari pengkodean semuanya sendiri dari awal. Ini membuatnya sangat sederhana untuk menambahkan sesuatu seperti gravitasi: yang harus kita lakukan hanyalah menyeret skrip ke GameObject kita agar bisa diterapkan. Saat pemutar Anda dipilih, klik Tambahkan Komponen di Inspector. Sekarang klik Fisika 2D RigidBody 2D. RigidBody 2D adalah nama skrip yang bekerja pada sprite 2D dan menerapkan semua fisika dasar yang kita inginkan, seperti gravitasi, gesekan, momentum, tumbukan, dan banyak lagi. Namun, cara termudah untuk melihat apa yang dilakukannya adalah dengan menerapkannya. Jadi drag Squarey sedikit lebih tinggi di jendela Scene lalu klik

play. Jika semuanya berjalan sesuai rencana, kita sekarang memiliki Squarey yang tampak sedih yang jatuh begitu saja dari atas layar dan dari bawah. Squarey, temui gravitasi!

Menggunakan Collider

Yang cerdik akan mencatat bahwa ada sesuatu yang hilang di sini. Tentu saja, kami sebenarnya tidak ingin Squarey jatuh ke tanah di bawahnya; kami ingin dia mendarat di atasnya. Untungnya, ini juga merupakan perbaikan yang mudah. Cukup klik Squarey lagi dan kemudian Tambahkan Komponen Fisika 2D Box Collider. Anda sekarang seharusnya dapat melihat RigidBody 2D dan Box Collider 2D di Inspector.

Gambar 3.29 Garis hijau menunjukkan Collider Squarey

Terlebih lagi, Anda juga harus memperhatikan garis hijau tipis di sekitar Squarey. Ini adalah collider, yang pada dasarnya mendefinisikan batas sprite Anda dan memberi tahu RigidBody 2D di mana massa fisik yang membentuk karakter dimulai dan berhenti. Klik mainkan dan Anda akan melihat bahwa karakternya masih jatuh di tanah di bawah. Mudah- mudahan, Anda sudah menebak bahwa ini karena ubin kami juga harus memiliki penabrakan yang terpasang. Untuk melakukan ini, drag kotak di sekitar ubin di tampilan Scene Anda menggunakan mouse untuk memilih semuanya sekaligus. Anda dapat melakukannya dengan cara yang sama seperti memilih sekumpulan ikon di desktop (Gambar 4-6), atau dengan mengeklik item pertama dalam hierarki, lalu item terakhir sambil menahan Shift. Anda juga dapat menggunakan Ctrl untuk membuat pilihan massal, seperti yang Anda lakukan di sebagian besar program Windows. Ini adalah trik yang akan sering berguna, meskipun ada metode lain untuk membuat perubahan massal yang akan segera kita bahas. Pastikan untuk membatalkan pilihan kamera dan kemudian menambahkan penumbuk di Inspector. Ini sekarang akan diterapkan ke setiap GameObject yang dipilih sekaligus.

Gambar 3.30 Nanti kita akan membahas menggunakan prefab untuk menghindari harus memilih beberapa GameObjects

Perhatikan bahwa kami tidak menambahkan RigidBody 2D ke ubin tanah kami. Itu karena kami tidak ingin mereka jatuh dari layar. Sekarang klik play, dan jika semuanya berjalan sesuai rencana, karakter kita akan jatuh dan mendarat di tanah.

Gambar 3.31 Berhasil

Jika Anda ingin menguji seberapa detail RigidBody 2D, posisikan Squarey sehingga dia sebagian menggantung di tepi salah satu langkah, lalu klik rotate lagi. Ketika dia mendarat, dia harus tip dan benar-benar berguling menuruni tangga. Pada titik ini, kami sekarang sudah memiliki permainan yang bertindak seperti yang kami harapkan. Langkah selanjutnya mungkin harus membuatnya interaktif. Bersiaplah: di sinilah pengkodean yang sebenarnya masuk.

Dalam dokumen Membuat Video Game Dengan 3D Unity (Halaman 105-109)