Bagaimana Membuat Permainan Mudah dalam Kesatuan 3D

Unity 3D adalah enjin pembuatan permainan yang kuat, mudah digunakan, dan yang paling penting, percuma untuk dimuat turun! (Terdapat versi berbayar yang lebih kuat, tetapi anda boleh berbuat banyak dengan versi percuma.)

Walaupun namanya, Perpaduan boleh digunakan untuk kedua-dua permainan 2D dan 3D. Anda boleh melakukan pengaturcaraan dalam C #, Java, atau Boo, bahasa yang sama dengan Python. Dalam tutorial ini, saya akan memandu anda melalui persekitaran Perpaduan dan menunjukkan kepada anda cara membuat permainan mudah dalam Perpaduan.

Anda tidak memerlukan sebarang pengalaman pengekodan untuk mengikuti Instruktable ini; Walau bagaimanapun, ia adalah disyorkan kerana anda mungkin mempunyai masa yang lebih mudah untuk menodalkan kod anda untuk kesalahan jika anda mempunyai latar belakang beberapa jenis bahasa pengekodan.

Instructable ini berdasarkan tutorial RollaBall di laman web Perpaduan. Terdapat sebilangan besar tutorial percuma yang boleh didapati di halaman web tutorial Unity. Saya mencipta Instructable ini kebanyakannya untuk amalan saya sendiri dengan Perpaduan, tetapi juga untuk menambah tutorial video dengan satu set arahan bertulis demi langkah.

Langkah 1: Buat Projek Baru

Buka Unity3D

Tutup tetingkap "Selamat Datang ke Perpaduan" yang muncul secara lalai apabila anda membuka Perpaduan.

Klik Fail - Projek Baru

Pilih lokasi untuk projek anda. Saya suka menggunakan satu folder khusus untuk memegang semua projek Perpaduan saya.

Taipkan nama untuk projek anda. Dalam tangkapan skrin, projek baru itu dipanggil "

Lihat tangkapan skrin untuk melihatnya sebelum mengklik butang Buat.

Klik "Buat."

Langkah 2: Sesuaikan Layout

Perkara pertama yang anda mungkin ingin lakukan ialah menyesuaikan susun atur. Setiap tetingkap boleh diklik dan diseret ke kedudukan. Sebagai alternatif, anda boleh menggunakan susun atur lalai yang disediakan dengan Perpaduan dengan mengklik bar jatuh di bawah Layout di kiri atas skrin. Saya suka susun atur Tinggi, walaupun saya dapat membantu meletakkan pandangan Game di bawah paparan Pemandangan.

Terdapat lima tingkap utama yang anda gunakan kebanyakan masa dengan Perpaduan. Mereka adalah Tingkap, Permainan, Hierarki, Projek, dan Tingkap Inspektor . Lihat lima gambar di bahagian atas langkah untuk imej setiap tetingkap.

Pemandangan - ini adalah tempat pembuatan permainan berlaku. Ia menunjukkan unsur-unsur yang anda ada dalam permainan anda dan di mana ia relatif kepada satu sama lain. Terdapat satu blok di sudut kanan atas yang menunjukkan orientasi spatial tempat kejadian.

Permainan - menunjukkan pandangan bahawa kamera utama melihat apabila permainan sedang dimainkan. Anda boleh menguji permainan anda dalam tetingkap ini dengan mengklik butang Main di bahagian atas, tengah skrin.

Hierarki - menyenaraikan semua unsur yang telah anda tambahkan ke tempat kejadian. Ini adalah kamera utama secara lalai. Anda boleh membuat elemen baru dengan mengklik Buat dan memilih jenis objek yang anda inginkan. Ini juga boleh dilakukan dengan menggunakan menu dropdown GameObject di bahagian atas skrin.

Projek - menunjukkan fail yang digunakan untuk permainan. Anda boleh membuat folder, skrip, dan lain-lain dengan mengklik Buat di bawah tetingkap Projek.

Inspektor - ini adalah di mana anda menyesuaikan aspek setiap elemen yang ada di tempat kejadian. Hanya pilih objek dalam tetingkap Hierarki atau klik dua kali pada objek dalam tetingkap Scene untuk menunjukkan sifatnya di panel Inspektor.

Langkah 3: Simpan Pemandangan & Sediakan Bina

Klik Fail - Simpan Adegan. Simpan pemandangan di bawah folder [Nama Projek] - Aset. Aset adalah folder pra-dibuat ke mana anda ingin menyimpan adegan dan skrip anda. Anda mungkin ingin membuat folder dipanggil Pemandangan dalam Aset kerana folder Aset boleh menjadi kemas.

Simpan tempat kejadian sebagai Pemandangan atau Utama atau sesuatu seperti itu.

Klik Fail - Bina Tetapan.

Tambah adegan semasa untuk membina.

Pilih platform yang dikehendaki. Terdapat banyak pilihan, termasuk komputer, sistem permainan, dan telefon pintar, tetapi jika anda membuat projek untuk kali pertama, anda kemungkinan besar akan memilih Web Player atau PC / Mac / Linux Standalone.

Klik Tetapan Pemain di bahagian bawah tetingkap Tetapan Binaan. Ini membuka pilihan Tetapan Pemain di Inspektor. Di sini, anda boleh menukar nama syarikat, nama produk (permainan), ikon lalai, dll.

Tutup dari tetingkap Tetapan Bina. Anda akan kembali kepada ini apabila anda sudah bersedia untuk menyelesaikan permainan anda.

Langkah 4: Buat Peringkat

Cara paling mudah untuk mencipta tahap dalam Perpaduan adalah untuk menambah kiub.

Untuk melakukan ini, pergi ke Objek Permainan - Buat Lain - Cube, atau gunakan menu Buat dalam tetingkap Hierarki. Tambah kiub.

Tetapkan semula transformasi kiub dengan mengklik kanan "Transform" dalam panel Inspektor. Amalan yang baik untuk melakukan ini apabila anda membuat Objek Permainan baru.

Pilih kiub dalam Hierarki. Ubah namanya "Dinding" dengan mengklik dua kali namanya dalam Hierarki atau menggunakan panel Inspektor.

Skala kiub dalam arah X untuk membuatnya panjang dan dinding seperti.

Klik kanan "Wall" di panel Hierarki, dan salinannya tiga kali, jadi anda mempunyai empat dinding. Ia akan kelihatan seperti anda hanya mempunyai satu dinding kerana ia adalah sama dan oleh itu menduduki titik yang sama di ruang angkasa. Seret mereka ke kedudukan dan / atau gunakan pilihan transform untuk setiap kiub untuk membuat susunan yang kelihatan seperti arena.

Nota: Untuk melihat sekitar pemandangan tempat kejadian, klik butang tengah tetikus untuk menyorot dan tatal untuk mengezum masuk dan keluar. Klik dan seret sambil memegang kekunci ALT untuk memutar pandangan.

Buat Objek Permainan kosong, menggunakan dropdown Permainan Objek (Buat Kosong) di bahagian atas skrin. Panggil ia "Peringkat." Tetapkan semula perubahannya.

Pilih semua empat "Dinding" dan seretnya di bawah Objek Permainan "Peringkat".

Tambah objek Permainan Pesawat dengan memilih Buat dalam panel Hierarki dan gunakannya untuk lantai. Namakan namanya "Lantai, " dan seretnya di bawah Peringkat dalam Hierarki.

Nota: anda perlu memukul masukkan selepas ditukar nama, atau perubahan itu mungkin tidak berkuat kuasa.

Berikan lantai a -0.5 bertukar dalam arah Y untuk memastikan ia melengkapkan kemas dengan empat dinding.

Buat skala lantai dalam arah X, Y, dan Z 1/10 skala yang digunakan untuk saiz dinding.

Langkah 5: Buat Pemain

Anda boleh memuat turun aksara dari pelbagai tempat dalam talian, seperti Store Perpaduan, tetapi untuk tutorial ini, kami hanya akan menggunakan salah satu Objek Permainan terbina untuk pemain.

Pergi ke Objek Permainan - Buat Lain-lain - Sfera.

Pilih sfera di Hierarki, dan tukar nama "Pemain." Tetapkan semula perubahannya.

Sekarang kita memerlukan fizik. Jadikan pemain tertakluk kepada undang-undang fizik dengan mengklik Tambah Komponen di bahagian bawah panel Inspektor dengan pemain yang dipilih. Tambah Fizik - Rigidbody. Tinggalkan semua tetapan lalai.

Anda akan melihat bahawa setiap objek datang dengan pelbagai "komponen" yang ditambahkan kepadanya yang anda dapat lihat di Inspektor. Setiap kiub, sfera, dan lain-lain mempunyai komponen yang dipanggil "collider." Ini adalah kawasan fizikal skrin di mana objek itu dianggap mengambil ruang. Jika anda mematikan collider, daripada objek menjadi seperti hantu, dapat melewati objek lain. (Lihat video untuk apa yang berlaku apabila anda mematikan komponen pelanggar pemain.) Anda boleh menghidupkan dan mematikan komponen dengan menyemak dan nyahtanda kotak di sebelah nama komponen.

Langkah 6: Membuat pemain bergerak di sekeliling

Pilih pemain dalam Hierarki.

Kurangkan komponen yang anda tidak mahu buka dalam Inspektor dengan mengklik anak panah ke bawah di sebelah kiri nama setiap komponen. Ini akan membersihkan ruang kerja anda sedikit.

Klik Tambah Komponen di bahagian bawah tetingkap Inspektor. Pilih Skrip Baru, namakan skrip seperti "PlayerController, " dan pilih bahasa pengaturcaraan. Saya menggunakan CSharp. Klik Buat dan Tambah.

Demi menyimpan fail teratur, buka folder Aset dalam tetingkap Projek, dan buat folder bernama Skrip. Masukkan skrip baru anda dalam folder ini.

Untuk membuka skrip untuk mengedit, klik dua kali nama skrip di Inspektor, atau buka dari tetingkap Projek. Ini membuka persekitaran pengaturcaraan yang dipanggil MonoDevelop.

Nota: Jika ini adalah pengekodan kali pertama anda, anda harus tahu bahawa ia boleh menjadi benar-benar nitpicky. Pastikan anda selaras dengan ejaan, kes, dan membuka dan menutup kurungan, tanda kurung, kurungan kurung, petikan, dan lain-lain. Juga, berhati-hati dengan kesilapan yang menyebabkan tidak mempunyai tanda titik akhir pada akhir baris kod.

Perlu ada dua bahagian yang dimasukkan dalam kod anda secara lalai: void Start () dan pembatalan Pembatalan (). Mula berjalan sebaik sahaja objek masuk ke dalam permainan, dan kemas kini berjalan secara berterusan semasa objek berada dalam permainan. Kami akan menambah yang ketiga, yang dipanggil FixedUpdate untuk mengendalikan protokol berkaitan fizik. Ia sepatutnya kelihatan seperti ini:

 void FixedUpdate () {} 

Sebelum kita boleh memasukkan arahan, kita perlu mengisytiharkan pembolehubah. Ini dilakukan ke arah bahagian atas halaman, dalam kurungan kurungan berikut Pengawal Kelas Awam (atau serupa): Monobehaviour, tetapi sebelum fungsi Start () yang tidak sah. Untuk pergerakan, kita akan menggunakan pembolehubah yang dipanggil "kelajuan, " yang mana kita boleh menyesuaikan untuk menentukan kelajuan di mana watak kita bergerak di sekitar arena. Isytiharkan jenis pemboleh ubah (float) dan nama (kelajuan) seperti:

 kelajuan apungan awam; 

Titik koma memberitahu program bahawa ini adalah akhir garisan kod. Anda akan mendapat ralat jika anda terlupa memasukkan koma bertitik pada akhir setiap baris garisan, jadi jangan biarkannya!

Di bawah FixedUpdate, mengisytiharkan dua lagi terapung, bergerakHorizontal dan bergerakVertical. Ini mengambil nilai-nilai bergantung pada arahan keyboard pengguna, dan FixedUpdate mengemas kini mereka setiap bingkai.

 float moveHorizontal = Input.GetAxis ("Horizontal"); float moveVertical = Input.GetAxis ("Vertical"); 

Perkara kes.

Masih dalam FixedUpdate, buat Vector3 baru, jenis pemboleh ubah dengan tiga dimensi yang berguna untuk menggerakkan objek di sekitar ruang 3D. Ini akan mengambil nilai input pengguna untuk pergerakan mendatar dan menegak, dan akan menjadi sifar di arah atas / bawah kerana dalam permainan ini, pemain hanya boleh bergerak dalam dua dimensi.

 Pergerakan Vector3 = Vector3 baru (bergerakHorizontal, 0.0f, moveVertical); 

Akhirnya, masukkan kekuatan pada pemain untuk bergerak di sekelilingnya, menggunakan rigidbody.AddForce, protokol yang dibina dalam komponen pemain tegar.

 rigidbody.AddForce (pergerakan * kelajuan * Time.deltaTime); 

Time.deltaTime digunakan untuk membuat pergerakan lebih lancar. Kami akan menyesuaikan pemboleh ubah kelajuan di kemudian hari, dalam editor Perpaduan.

Simpan fail CSharp, dan beralih ke Perpaduan.

Pergi ke panel Inspektor untuk pemain, dan lihat skrip pergerakan yang baru anda buat. Harus ada kotak untuk pembolehubah awam anda, kelajuan. Anda boleh mengubah nilai pembolehubah awam menggunakan Inspektor.

Buat masa ini, buat kelajuan sama dengan angka antara 100-1000, dan klik butang main di bahagian atas, tengah skrin. Anda sepatutnya dapat menggerakkan bola sekitar menggunakan kekunci pergerakan lalai Unity, sama ada ASWD atau kekunci anak panah.

Klik butang main lagi untuk keluar dari mod ujian.

Langkah 7: Tambah Lampu

Buat Objek Permainan yang kosong dan sebut sebagai "Lampu." Lakukan ini dengan mengklik GameObject di bar alat atas dan memilih "buat kosong."

Buat lampu arah dengan memilih pilihan dari "toolbar" dalam panel Hierarki. Namakannya "Cahaya Utama." Buatlah objek kanak-kanak Lampu dengan menyeretnya dalam Hierarki ke objek permainan Lampu. Ini adalah konsep yang serupa untuk meletakkan fail ke dalam folder.

Dengan Light Utama dipilih, tukar tetapan cahaya di panel Inspektor dengan menukar Jenis Bayangan ke "Bayang-Bayang Lembut" dan Resolusi ke "Resolusi Sangat Tinggi."

Dalam panel Pemeriksa, tukar putaran cahaya utama ke sudut di atas arena. Saya menggunakan 30X, 60Y, 0Z.

Klik kanan Light Utama dalam panel Hierarki untuk menduplikasinya. Namakan duplikat "Isi Light, " dan anak itu di bawah Lampu.

Kurangkan intensiti Cahaya Isi dengan menukar warna kepada warna biru muda dan mengurangkan medan Intensiti kepada 0.1 (dalam Pemeriksa).

Tukar Shadows ke "No Shadows."

Sudut Cahaya Isi arah yang bertentangan dengan cahaya utama. Bagi saya, ini adalah (330, 300, 0).

Langkah 8: Fine-tune Sudut Kamera

Kami mahu kamera berselerak di atas arena, jadi pilih Kamera Utama dalam Hierarki, dan laraskan transformasinya sehingga imej dalam pratonton kamera (kanan bawah panel Adegan, dengan kamera dipilih) kelihatan baik.

Saya menggunakan (0, 10.5, -10) untuk kedudukan, dan (45, 0, 0) untuk putaran.

Anda juga boleh menyeret kamera di sekitar tempat kejadian untuk meletakkannya, jika anda mahu.

Langkah 9: Buat Kamera Ikuti Pemain

Kami mahu kamera mengikuti pemain sekitar skrin apabila ia bergerak. Untuk tujuan ini, buat skrip yang dipanggil "cameraMovement" dengan menambah komponen skrip baru kepada Kamera Utama dalam panel Inspektor. Double klik skrip untuk membukanya dalam MonoDevelop.

Skrip ini akan mengakses Objek Permainan lain, pemain, jadi anda mesti mengisytiharkan ini sebelum fungsi Start () script ditulis

 pemain GameObject awam; 

Buat Vektor3 yang dipanggil "mengimbangi" dengan menulis

 offset Vektor3 swasta; 

Di bawah fungsi Mula (), tetapkan nilai mengimbangi

 offset = transformation.position; 

iaitu kedudukan (x, y, z) kamera.

Di bawah fungsi yang dipanggil LateUpdate (), tentukan posisi kamera sebagai kedudukan pemain ditambah beberapa offset:

 tidak sah LateUpdate () {transform.position = player.transform.position + offset;} 

Simpan skrip dan kembali kepada Perpaduan.

Kita perlu menyerahkan Objek Permainan kepada "pemain" yang kami tentukan dalam skrip CameraMovement. Pilih Kamera Utama dan lihat panel Inspektor. Di bawah skrip CameraMovement, terdapat kotak yang dipanggil "Pemain." Ia kini ditugaskan kepada Tiada (GameObject). Seret Pemain dari Hierarki ke dalam kotak ini untuk menyerahkan objek permainan pemain ke skrip CameraMovement.

Pastikan anda menyeret skrip baru ke dalam folder skrip (dalam panel Projek), yang anda buat di bawah Aset.

Cuba permainan dengan mengklik butang main di bahagian atas, tengah skrin. Anda sepatutnya dapat memindahkan pemain sekitar dengan kekunci anak panah dan kamera harus mengikut pergerakan anda.

Simpan tempat kejadian dan simpan projek itu.

Langkah 10: Buat Item

Buat Objek Permainan baru. Ia boleh menjadi sfera, kiub, kapsul, atau silinder. Saya menggunakan kiub.

Panggil ia "Item."

Tagkan Item sebagai "item" dengan memilih Tag, dan buat tag baru yang dipanggil "item, " kemudian kembali ke Tag untuk objek permainan itu dan memilih tag "item" baru yang anda buat. Tag semua item anda sebagai item. Pastikan anda sepadan dengan ejaan dan permodalan dengan tepat.

Letakkan Item ke dalam Objek Permainan kosong yang dipanggil "Item."

Tetapkan semula perubahan mereka.

Tambah pemain tegar ke Item.

Duplikat Item beberapa kali dan letakkan salinan di sekeliling arena.

Langkah 11: Buat Pemain Kumpulkan Item & Tunjukkan Skor

Buka skrip pergerakan pemain dari panel Inspektor dengan objek permainan Pemain dipilih, dan ubah skrip untuk membolehkan pemain untuk mengumpul, dan menjejaki, item yang telah dikumpulkan.

Buat dua deklarasi: satu adalah pemboleh ubah yang menjejaki skor anda, dan yang lain adalah teks GUI yang akan memaparkan skor anda pada pemandangan tempat kejadian.

 kiraan int peribadi; awam GUIText countText; 

Di bawah fungsi tidak sah Mula (), mulakan kiraan dan CountText, fungsi yang akan kami tulis kemudian.

 hitung = 0; CountText (); 

Tulis fungsi baru untuk apa yang berlaku apabila Player bertembung dengan Item. Ini sepatutnya menjadi bahagiannya sendiri, sama seperti Void Start () dan membatalkan pembaruan bahagian.

 tidak sah OnTriggerEnter (Collider other) {if (other.gameObject.tag == "item") 
 {other.gameObject.SetActive (false); 
 hitung = hitung + 1; 
 CountText ();} 
 } 

Tulis fungsi CountText, yang akan mengemas kini skor pada paparan GUI.

 Void CountText () {countText.text = "Count:" + count.ToString (); 
 } 

Simpan kod dan beralih ke Perpaduan.

Pilih semua item anda, pastikan ia ditandakan sebagai item, dan periksa butang "Adakah Trigger" dalam komponen Kotak Collider Inspektor.

Juga periksa butang "Is Kinematic" di bawah tegar. Ini menghalang item anda daripada jatuh ke lantai, pada asasnya dengan mematikan graviti.

Untuk countText, buat GUI baru (antara muka pengguna grafik) Teks menggunakan pilihan Buat di bawah Hierarki.

Tetapkan transformasi GUI Text ke (0, 1, 0) dan berikannya piksel offset (10, -10) dalam komponen GUIText pada panel Inspektor.

Seret Teks GUI ke dalam kotak Teks Count pada Inspektor dengan Pemain yang dipilih.

Langkah 12: Membuat Bahaya

Panel keras untuk melihat ini akan melancarkan pemain ke udara, dan mungkin melalui pinggir arena, di mana ia akan menjadi permainan lebih. Membuat bahaya adalah proses yang sama untuk membuat item.

Buat objek permainan kosong yang baru dipanggil "Bahaya."

Buat Quad baru dan sebut sebagai "Hazard."

Tagkannya sebagai bahaya, dan periksa "Adakah Trigger."

Tukar warna supaya anda dapat melihatnya dengan memilih Mesh Renderer di Inspektor, dengan bahaya yang dipilih, dan mengubah bahannya. Klik drop-down oleh Bahan, dan gunakan bulatan kelabu kecil di sebelah kanan kotak untuk memilih bahan yang berbeza daripada kelabu lalai untuk bahaya. Saya mempunyai bahan putih sebelum dipasang, jadi saya menggunakannya.

Tukar putaran bahaya ke 90 tentang paksi X dan turunkan ketinggian Ynya ke -0.4 jadi ia adalah dataran putih kecil yang berbaring di atas lantai arena.

Edit skrip Player, di bawah fungsi OnTriggerEnter (), supaya ia menyumbang kemungkinan bahwa objek yang dimainkan oleh pemain adalah bahaya, dan bukan item. Beritahu pemain untuk melompat jika ia mencecah bahaya.

 tidak sah OnTriggerEnter (Collider other) {if (other.gameObject.tag == "item") {other.gameObject.SetActive (false); hitung = hitung + 1; CountText (); } jika (other.gameObject.tag == "bahaya") {other.gameObject.SetActive (false); Vector3 melompat = Vector3 baru (0.0f, 30, 0.0f); rigidbody.AddForce (jump * speed * Time.deltaTime); } 

Simpan kod itu, kembali ke editor Perpaduan, dan ulangi bahaya beberapa kali.

Letakkan bahaya di sekeliling arena, dan cuba permainan!

Artikel Berkaitan