Apakah Anda baru mengenal Unity? Ingin mempelajari cara mengambil input dari pemain dan memindahkan karakter di sekitar layar? Kami telah membuat panduan ini untuk menunjukkan tiga cara berbeda agar Anda dapat mengontrol pergerakan pemain di Unity.
Baik Anda baru dalam pengkodean atau memiliki pengalaman, tutorial C# ini akan membantu Anda, dan karakter Anda pada mereka.
Mari kita mulai.
Pergerakan Pemain dalam Kesatuan: Mengumpulkan Input
Hal pertama yang pertama, Anda perlu tahu cara menangkap input dari pengguna dan mengubahnya menjadi gerakan dalam game. Unity membuat ini cukup mudah selama Anda tahu di mana mencarinya.
Dengan Unity terbuka, klik Sunting di bilah alat atas. Sekarang pilih Pengaturan Proyek. Dari daftar sebelah kiri, pilih Manajer Masukan. Pilih sumbu, mengisi daftar nilai input. Anda pasti ingin melihat Horisontal dan Vertikal untuk gerakan dasar.
Anda akan menggunakan kapak ini bersama dengan Memasukkan. GetAxisRaw(); untuk gerakan dasar di bagian selanjutnya.
Pergerakan Pemain dalam Kesatuan Menggunakan Rigidbody dan Collider
Sekarang setelah Anda mengetahui nama sumbu, Anda dapat menggunakannya untuk mengontrol pergerakan pemain.
Dalam proyek Unity Anda Hirarki lihat, klik kanan dan pilih Objek 3D > Kapsul untuk menciptakan apa yang akan Anda berikan pada gerakan. Pastikan untuk menggunakan taktik yang sama untuk membuat landasan Pesawat terbang untuk Kapsul Anda untuk berdiri.
Pastikan untuk mengatur ulang Mengubah nilai kedua objek, dan pindahkan Kapsul Anda sehingga berdiri di Pesawat. Ganti nama Kapsul Anda menjadi sesuatu seperti "Pemain" untuk memudahkan identifikasi.
Terkait: 5 Bahasa Pengembangan Game Unity: Mana yang Harus Anda Pelajari?
Klik pada Pemain objek dan, dalam Inspektur lihat, gulir ke bawah ke Tambahkan Komponen. Tambah sebuah tubuh kaku, lalu tambahkan komponen lain sebagai a kapsul Collider kali ini. Anda memerlukan komponen ini untuk menambahkan fisika, dan karenanya gerakan, ke Pemain.
Kemudian, klik kanan di Skrip folder dan Membuat baru Skrip C#. Beri nama skrip ini sesuatu di sepanjang baris "PlayerMovement". Jika Anda berencana untuk menambahkan beberapa jenis gerakan untuk karakter atau jenis pengontrol yang berbeda, Anda akan ingin membuat banyak skrip berbeda untuk setiap jenis gerakan. Untuk saat ini, kami akan fokus pada dasar-dasar dan menggunakan satu skrip.
Lihat juga: Apa itu Pemrograman Modular dalam Unity dan Mengapa Penting?
Klik dua kali skrip Anda untuk membukanya. Anda akan bertemu dengan skrip Unity default:
menggunakan Sistem. Koleksi;
menggunakan Sistem. Koleksi. Umum;
menggunakan UnityEngine;
Pergerakan Pemain kelas publik: MonoBehaviour
{
// Mulai dipanggil sebelum pembaruan bingkai pertama
batal Mulai()
{}
// Update dipanggil sekali per frame
batal Perbarui()
{
}
}
Anda dapat menghapus menggunakan Sistem. Koleksi; dan menggunakanSistem. Koleksi. Umum; karena mereka tidak diperlukan untuk skrip ini.
Dengan itu, fokuslah pada
PlayerMovement kelas publik: MonoBehaviour {
untuk sekarang. Di dalam kurung kurawal pembuka, buat a pelampung umum variabel bernama kecepatan atau sesuatu yang serupa. Ini kecepatan variabel adalah pengganda yang akan mengontrol seberapa cepat kita Pemain bergerak setelah beberapa pemrograman lagi. Untuk saat ini, tetapkan kecepatan sama dengan sesuatu seperti 10f.
Anda juga perlu membiarkan Unity bahwa ada Rigidbody untuk dimanipulasi dalam skrip ini. Ini dilakukan dengan kata kunci tubuh kaku dan nama variabel—kita akan memilih rb.
Pergerakan Pemain kelas publik: MonoBehaviour
{
kecepatan pelampung umum = 10f; //Kontrol pengganda kecepatan
rb kaku; // Memberi tahu skrip ada benda yang kaku, kita dapat menggunakan variabel rb untuk merujuknya ke skrip selanjutnya
Itu saja yang perlu Anda tambahkan di bagian ini. Sekarang, lanjutkan ke batal Mulai(). Saat memulai permainan, Anda perlu mengatur rb variabel sama dengan tubuh kaku pada Pemain seperti:
batal Mulai()
{
rb = GetComponent(); //rb sama dengan benda tegar pada pemutar
}
Sekarang, lihatlah batal Perbarui() fungsi. Ini adalah fungsi yang akan Anda gunakan untuk terus-menerus mengambil input dari keyboard pemain, pengontrol, dll. Ingat ketika Anda memeriksa Pengaturan Proyek untuk Sumbu Masukan? Anda akan menggunakannya di sini.
batal Perbarui()
{
float xMove = Masukan. GetAxisRaw("Horizontal"); // kunci d mengubah nilai menjadi 1, kunci mengubah nilai menjadi -1
float zMove = Masukan. GetAxisRaw("Vertikal"); // kunci w mengubah nilai menjadi 1, kunci s mengubah nilai menjadi -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * kecepatan; // Menciptakan kecepatan dalam arah nilai yang sama dengan penekanan tombol (WASD). rb.velocity.y berkaitan dengan jatuh + melompat dengan mengatur kecepatan ke y.
}
Jangan khawatir jika Anda merasa kewalahan dengan lompatan kode; kami akan menjelaskannya langkah demi langkah. Pertama, buat mengambang variabel dengan nama seperti xPindahkan, dan atur sama dengan Memasukkan. GetAxisRaw("Horizontal");
Memasukkan. GetAxisRaw(); adalah cara Unity merekam input Player dari sumbu kamu temukan di Pengaturan Proyek. Anda dapat membaca lebih lanjut tentang itu di Dokumentasi resmi Unity. "Horisontal" berasal dari Sumbu horisontal nama di Unity. Sumbu ini mengontrol gerakan kiri dan kanan dengan tombol "a" dan "d".
Seperti yang mungkin bisa Anda tebak sekarang, float zMove = Masukan. GetAxisRaw("Vertikal");
melakukan hal yang sama tetapi untuk tombol "w" dan "s".
Terkait: Tutorial Unity 3D Terbaik untuk Pemula
Selanjutnya, Anda akan meletakkannya kecepatan variabel yang Anda buat ke dalam permainan dan selesaikan potongan terakhir teka-teki untuk pergerakan pemain di Unity.
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * kecepatan; // Menciptakan kecepatan dalam arah nilai yang sama dengan penekanan tombol (WASD). rb.velocity.y berkaitan dengan jatuh + melompat dengan mengatur kecepatan ke y.
Kembali ke Unity's Inspektur lihat untuk Pemain obyek. Lihatlah tubuh kaku-dibawah Info, Anda akan melihat nilai Kecepatan. Ini adalah nilai yang Anda targetkan rb.kecepatan.
Vector3 baru (xMove, rb.velocity.y, zMove) * kecepatan, membuat vektor baru dengan nilai x, y, dan z yang disediakan, kemudian mengalikan nilai vektor dengan kecepatan.
Pastikan untuk menyeret Gerakan Pemain skrip ke Pemain objek di Unity, dan hanya itu! Secara keseluruhan, Anda memiliki skrip C# yang berfungsi yang mengambil input dari pemain dan mengubahnya menjadi gerakan karakter di Unity.
Berikut kode yang sudah selesai:
menggunakan UnityEngine;
Pergerakan Pemain kelas publik: MonoBehaviour
{
kecepatan pelampung umum = 10f; //Kontrol pengganda kecepatan
rb kaku; // Memberi tahu skrip ada benda yang kaku, kita dapat menggunakan variabel rb untuk merujuknya ke skrip selanjutnya// Mulai dipanggil sebelum pembaruan bingkai pertama
batal Mulai()
{
rb = GetComponent(); //rb sama dengan benda tegar pada pemutar
}// Update dipanggil sekali per frame
batal Perbarui()
{
float xMove = Masukan. GetAxisRaw("Horizontal"); // kunci d mengubah nilai menjadi 1, kunci mengubah nilai menjadi -1
float zMove = Masukan. GetAxisRaw("Vertikal"); // kunci w mengubah nilai menjadi 1, kunci s mengubah nilai menjadi -1
rb.velocity = new Vector3(xMove, rb.velocity.y, zMove) * kecepatan; // Menciptakan kecepatan dalam arah nilai yang sama dengan penekanan tombol (WASD). rb.velocity.y berkaitan dengan jatuh + melompat dengan mengatur kecepatan ke y.
}
}
Catatan: Jika Anda menemukan karakter Anda melakukan lebih banyak flopping daripada yang lain, pastikan untuk mengunci rotasi Pemain di Inspektur.
Pelajari dan Hasilkan Lebih Banyak di Unity
Sekarang setelah Anda mengetahui cara memprogram gerakan pemain di Unity dengan komponen Rigidbody dan Collider, apa yang akan Anda pelajari selanjutnya? Mungkin memperluas pengontrol gerakan Anda untuk menambahkan hal-hal seperti geser, lompat ganda, dan banyak lagi akan terbukti menghibur dan menarik.
Unity Learn penuh dengan topik menarik untuk meningkatkan keahlian pengembangan game Anda. Kami percaya salah satu faktor terpenting dalam memperluas pengetahuan Anda tentang pemrograman adalah mempelajari sesuatu yang baru setiap hari. Tetap penasaran dan selamat meretas!
Ingin mulai mengembangkan game Anda sendiri? Unity Learn adalah cara terbaik dan termudah untuk belajar dan menguasai apa yang perlu Anda ketahui.
Baca Selanjutnya
- Pemrograman
- Pengembangan Game
- Persatuan
- Pemrograman
Marcus adalah jurnalis teknologi lepas dan Editor Junior untuk Pemrograman di MUO. Dia adalah pembelajar seumur hidup, pengembang front-end penghobi, dan penulis cerita pendek dengan 3+ tahun pengalaman mengembangkan prosa yang membuat pembaca tetap tahu.
Berlangganan newsletter kami
Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!
Klik di sini untuk berlangganan