Iklan
Fitur mengejutkan dari ekonomi internet adalah munculnya videogame indie. Setelah domain eksklusif dari seribu orang, multi-juta dolar triple-A studio, sejumlah alat telah dikembangkan itu membawa sumber daya pengembangan game modern ke tangan individu atau koleksi kecil programmer dan perancang. Kami sebelumnya telah membahas game indie terbaik 10 Game Indie Sangat Bagus, Anda Akan Terlupakan Mereka Indie At AllNamun, ada kalanya Anda menginginkan sesuatu yang berbeda dari norma indie. Sebuah game yang mengikuti nilai indie, namun dibuat dengan kualitas yang dikenal sebagai game AAA paling top-rak. Judul-judul seperti ... Baca lebih banyak , jadi pastikan Anda memeriksa beberapa inspirasi untuk apa yang dapat dicapai dengan alat-alat seperti Unity.
Tim pengembang game indie ini telah menunjukkan kelincahan dan toleransi risiko yang, dalam banyak kasus, memungkinkan mereka untuk mendorong inovasi gameplay lebih cepat daripada rekan-rekan anggaran besar mereka. Sejumlah judul indie yang sangat sukses telah tayang perdana dalam beberapa tahun terakhir, termasuk
Minecraft, Limbo, dan Bocah Super Daging, dan bahkan jika Anda tidak harus memiliki keterampilan untuk membuat game seperti ini, Anda bisa buat game menggunakan Buildbox Cara Membuat Game Video dalam Seminggu Menggunakan BuildboxAda sebuah program yang membuat pengembangan game sangat mudah bahkan bagi mereka yang sama sekali tidak memiliki pengalaman dalam mendesain video game. Ini disebut Buildbox. Inilah mengapa Anda harus mencobanya. Baca lebih banyak .Dalam lanskap perkembangan game indie yang berkembang pesat, Kesatuan telah muncul sebagai sesuatu yang standar de-facto: biayanya yang murah, kemudahan penggunaan, dan rangkaian fitur yang luas membuatnya ideal untuk pengembangan game yang cepat. Persatuan sangat fleksibel, sehingga Anda dapat meratakannya buat pengontrol gim kustom Anda sendiri Cara Membuat Game Controller Kustom Dengan Arduino dan UnityPernahkah Anda ingin merancang game controller Anda sendiri? Lebih mudah dari yang Anda pikirkan! Baca lebih banyak dengan sedikit DIY tahu caranya!
Bahkan studio besar seperti PKC (Pengembang PT Eve Online) menggunakannya untuk konsep game prototyping cepat. Unity menyediakan "mesin gim dalam kotak" - sebuah fisika dan mesin rendering dengan kait untuk beberapa bahasa scripting, yang dapat diadaptasi untuk hampir semua genre videogame.
Sementara Unity memang menyediakan editor visual untuk memanipulasi lingkungan game, Unity bukanlah alat pembuat game 'nol pemrograman'. Ini mengharuskan Anda memprogram untuk menghasilkan hasil, tetapi juga memberi Anda alat yang jauh lebih fleksibel dan kuat daripada yang bisa dilakukan oleh program 'pembuat game'.
Unity tidak akan melakukan pekerjaan untuk Anda, tetapi itu menurunkan penghalang untuk masuk secara substansial. Mulai sepenuhnya dari awal dengan C ++ dan OpenGL, perlu beberapa hari untuk sampai ke titik di mana sebenarnya ada sesuatu yang ditampilkan di layar. Menggunakan Unity, dibutuhkan sekitar sepuluh detik. Unity menempatkan elemen dasar pembuatan game ke tangan programmer pemula dengan cara yang cepat dan intuitif.
Hari ini saya akan membimbing Anda melalui semua yang perlu Anda ketahui untuk membuat game di Unity, yang dipecah menjadi sepuluh bab utama:
§1 – Versi Kesatuan
§2 – Memasang Persatuan
§3 – Pengantar Singkat untuk Paradigma Berorientasi Objek
§4 – Dasar-dasar Kesatuan
§5 – Contoh: Elemen Dasar dari Game
§6 – Scripting in Unity
§7 – Contoh: Scripting Pong
§8 – Menjelajahi Dokumentasi / Belajar Lebih Banyak
§9 – Membangun Game Anda / Mengkompilasi ke Aplikasi Standalone
§10-Catatan Penutupan
1. Versi Unity
Unity hadir dalam dua rasa dasar: versi pro dan versi gratis. Ada sebuah jumlah perbedaan, tetapi, secara umum, versi pro mendukung sejumlah perbaikan visual (seperti bayangan lembut dan waktu nyata) pasca-pemrosesan), dan sejumlah besar fitur yang relatif kecil yang sangat membantu untuk lebih kompleks permainan.
Karena itu, untuk sebagian besar game yang relatif sederhana yang mungkin ingin Anda bangun, versi gratis Unity sangat memadai. Kami akan menjabarkan perbedaan utama di bawah ini secara lebih rinci untuk mereka yang tertarik.
1.1 Harga
Versi gratis dari Unity tentu saja gratis. Namun, ada beberapa batasan: versi gratis Unity tidak dapat dilisensikan ke perusahaan mana pun dengan pendapatan tahunan lebih dari $100,000. Meskipun organisasi semacam itu berada di luar cakupan panduan ini, jika Anda curiga Anda mungkin menjadi organisasi seperti itu, mungkin bijaksana untuk muncul untuk versi Pro.
Versi Pro Unity adalah $75 sebulan, atau $1500 untuk lisensi permanen, dan tidak memiliki batasan pada apa yang dapat Anda lakukan dengan game yang dibuat dengannya. Tersedia juga uji coba gratis selama 30 hari, yang akan kami gunakan untuk panduan ini, untuk memberi Anda gambaran lengkap tentang fitur yang tersedia. Lisensi pelajar satu tahun juga tersedia melalui Studica untuk $129.
1.2 Fitur
Ada banyak fitur yang tidak ada di Unity versi gratis. Namun, perbedaan paling penting adalah sebagai berikut: versi gratis Unity tidak memiliki sejumlah opsi render yang memungkinkan permainan yang tampak lebih baik, lebih cepat berjalan (dukungan LOD, pemrosesan pasca-ruang-layar, shader tingkat lanjut, bayangan lembut waktu nyata, dan ditangguhkan render). Itu juga tidak memiliki penuh sistem animasi mechanim, dan beberapa alat AI.
Secara umum, untuk proyek yang kompleks, skala besar, atau proyek di mana kinerja grafis penting, versi pro berharga. Saya menggunakan versi pro, karena saya mengembangkan game realitas virtual untuk Keretakan Oculus Ulasan Rift OculusRealitas Virtual bukanlah hal baru, tetapi akhirnya terjangkau dan dalam jangkauan kami. Setelah empat tahun dan dua prototipe pengembangan, edisi konsumen akhir dari Oculus Rift telah tiba. Baca lebih banyak , dan dukungan pasca-pemrosesan ruang-layar diperlukan untuk berinteraksi dengan headset dengan benar.
2. Menginstal Persatuan
Unity mudah untuk diinstal. Anda dapat mengunduh yang dapat dieksekusi dari unity3d.com/get-unity/download.
Setelah diunduh, jalankan, lalu ikuti instruksi penginstal. Ketika instalasi selesai, sebuah jendela berjudul ‘aktifkan lisensi Unity Anda’ akan muncul. Centang kotak yang bertanda ‘aktifkan percobaan 30 hari gratis dari Unity Pro’ dan kemudian ‘OK’.
Selamat! Anda sekarang memiliki uji coba Unity Pro selama 30 hari. Saat uji coba berakhir, jika Anda tidak ingin membeli versi pro, Anda dapat beralih ke versi gratis dan menyimpan konten yang ada.
3. Pengantar Singkat untuk Paradigma Berorientasi Objek
Sebelum memulai dengan Unity, penting bagi kami untuk sedikit membahas dasar-dasarnya. Persatuan mendukung keduanya C # dan JavaScript untuk pemrograman game 7 Bahasa Unity Development Game untuk Dipelajari: Mana yang Terbaik?Ingin memulai pengembangan game di Unity? Anda harus terbiasa dengan salah satu bahasa yang kompatibel dengan Unity ini. Baca lebih banyak ; kami akan bekerja dengan C # untuk tutorial ini.
Pertama, jika Anda belum pernah memprogram sebelumnya, kesampingkan tutorial ini dan habiskan beberapa hari bekerja melalui Microsoft C # Bahasa Primer sampai Anda merasa nyaman menggunakan bahasa untuk tugas-tugas sederhana.
Jika Anda ingin sesuatu yang sedikit berbeda dengan C # (tetapi tidak harus bahasa yang dapat Anda gunakan di Unity), maka lihat panduan kami untuk enam bahasa pemrograman termudah untuk pemula 6 Bahasa Pemrograman yang Paling Mudah Dipelajari untuk PemulaMempelajari program adalah tentang menemukan bahasa yang tepat, sama halnya dengan proses edifikasi. Berikut adalah enam bahasa pemrograman termudah untuk pemula. Baca lebih banyak .
Jika sebelumnya Anda telah memprogram dalam bahasa imperatif atau berorientasi objek seperti C atau Java, baca sekilas primernya dan kenali bagaimana C # berbeda dari bahasa lain yang pernah Anda gunakan di masa lalu. Apa pun itu, jangan lanjutkan dengan tutorial sampai Anda merasa nyaman menyelesaikan masalah sederhana dengan C # (misalnya, jika saya bertanya Anda menulis program yang mencetak seratus bilangan prima pertama, Anda harus dapat menulis program itu tanpa berkonsultasi Google).
Konsep yang paling penting untuk dipahami di sini adalah paradigma berorientasi objek Darimana Pemrograman "Berorientasi Objek" Mendapatkan Namanya?Berorientasi Objek bukan hanya kata kunci acak yang Anda dengar di lingkaran pemrograman. Ada alasan di balik nama itu - tapi apa? Bergabunglah dengan saya ketika saya menjelajahi beberapa dasar-dasar konsep pemrograman dan menjelaskan ... Baca lebih banyak (disingkat OOP). Dalam bahasa berorientasi objek, program dibagi menjadi unit fungsional yang disebut Benda. Setiap objek memiliki variabel dan fungsinya sendiri. Fungsi objek-spesifik disebut metode.
Idenya di sini adalah modularitas: dengan menyuruh masing-masing objek diisolasi, dan memaksa objek lain untuk berinteraksi dengannya melalui metodenya, Anda dapat mengurangi jumlah kemungkinan interaksi yang tidak disengaja - dan, dengan ekstensi, bug. Anda juga dapat membuat objek yang dapat digunakan kembali nanti tanpa modifikasi. Di Unity, Anda akan membangun objek-objek ini dan melampirkannya entitas game (yang perilakunya akan mereka atur).
Objek berasal dari kelas: kelas hanyalah sebuah file yang menjabarkan definisi objek Anda. Jadi, jika Anda menginginkan Mook objek yang menangani AI untuk musuh di gim Anda, Anda akan menulis kelas 'Mook', dan kemudian melampirkan file itu ke setiap entitas musuh. Saat Anda menjalankan gim Anda, setiap musuh akan dilengkapi dengan salinan objek ‘Mook’.
Melampirkan skrip baru ke objek terlihat seperti ini:
Pertama, pilih objek dan pergi ke Inspektur. Klik pada Tambahkan Komponen tombol.
Pergi ke skrip baru, masukkan nama yang Anda inginkan, dan klik buat dan tambahkan.
Sekarang Anda memiliki skrip baru yang dapat diedit dengan mengklik dua kali!
File kelas terlihat seperti ini:
menggunakan UnityEngine; kelas publik Mook: MonoBehaviour {private float health; batal Mulai () {health = 100; } membatalkan Pembaruan () {if (health> 0) {/ * Cari pemain jika Anda menemukan pemain di jalan, bunuh dia jika Anda tertembak, hapus kesehatan acak * /}} }
Mari kita uraikan ini:
- Menggunakan UnityEngine: Baris ini memberi tahu C # bahwa kami ingin menggunakan perpustakaan Unity, yang memungkinkan kami untuk terhubung ke mesin permainan Unity.
- Kelas publik Mook: MonoBehaviour:Baris ini menyatakan kelas dan namanya - Mook.
- Kesehatan mengapung pribadi: Ini mendeklarasikan variabel kelas privat (yang hanya bisa diubah dari dalam kelas). Variabel diberi nilai dalam Mulailah.
- Batal Mulai (): Ini menyatakan metode yang disebut Mulailah. Mulai adalah metode khusus yang berjalan hanya sekali, ketika game awalnya diluncurkan.
- Batal Pembaruan (): Pembaruan adalah metode khusus lain, yang berjalan pada setiap frame. Sebagian besar logika gim Anda akan masuk ke sini.
- // jika Anda menemukan pemain di jalan, bunuh dia: Baris ini adalah komentar (setiap baris yang dimulai dengan garis miring ganda diabaikan oleh C #). Komentar digunakan untuk mengingatkan diri Anda tentang apa yang dilakukan bit kode tertentu. Dalam hal ini, komentar ini digunakan untuk menggantikan blok kode yang lebih rumit yang benar-benar melakukan apa yang dijelaskan oleh komentar tersebut.
Bersama Mulailah dan Memperbarui, Anda dapat instantiate metode Anda sendiri dengan hampir semua nama. Namun, metode yang Anda buat tidak akan berjalan kecuali jika mereka dipanggil. Mari kita mendeklarasikan metode untuk kelas hipotetis yang disebut addTwoNomor yang menambahkan dua angka bersamaan:
public float addTwoNumbers (float a, float b) {return a + b; }
Ini mendeklarasikan metode publik (dapat diakses oleh objek lain) yang mengembalikan float, dipanggil addTwoNomor, yang mengambil dua float sebagai input (disebut Sebuah dan b). Kemudian mengembalikan jumlah dari dua nilai sebagai outputnya.
Memanggil metode ini dari dalam kelas yang sama (katakanlah, dari dalam Memperbarui) terlihat seperti ini:
float result = addTwoNumbers (1, 2);
Memanggil metode dari kelas lain serupa:
contoh addTwoNumbers; float result = instance.addTwoNumbers (1, 2);
Sekali lagi, ini hanya membuat turunan dari kelas kami, mengakses metode yang sesuai dan memberinya angka yang ingin kita tambahkan, kemudian menyimpan hasilnya di hasil. Sederhana.
Jika skrip Anda dilampirkan ke objek yang memiliki properti khusus (seperti penghasil partikel) yang tidak dapat diakses di bawah set normal parameter GameObject, Anda dapat memilih untuk memperlakukannya sebagai jenis entitas game yang berbeda dengan menggunakan itu DapatkanComponent metode.
Sintaksnya terlihat seperti ini:
DapatkanComponent().Bermain();
Jika ada yang tidak Anda kenal, kembalilah ke primer C #. Ini akan menghemat banyak frustrasi saat kami melanjutkan.
4. Dasar-dasar Kesatuan
Di bagian ini, kita akan membahas mekanisme dasar mesin Unity. Alur kerja di Unity berjalan seperti ini:
- Buat entitas untuk melayani peran dalam permainan (kosong GameObjects dapat digunakan untuk tugas logis abstrak).
- Tulis atau temukan file kelas, dan tambahkan ke entitas sebagai skrip (menggunakan Tambahkan Komponen tombol di inspektur melihat.
- Lari > uji > debug > ulang sampai berhasil dan beralih ke elemen permainan selanjutnya.
Unity hadir dengan sejumlah tab tampilan dasar yang dapat ditata dengan berbagai cara sesuai selera pengguna. Lima besar adalah:
- Permainan: menampilkan instance game yang dapat Anda berinteraksi dan uji coba.
- Tempat kejadian: menyediakan versi statis dan dapat diedit dari dunia permainan.
- Inspektur: memungkinkan Anda untuk memodifikasi setiap entitas di dunia game dengan memilihnya di editor tab.
- Proyek: memungkinkan Anda untuk menelusuri file proyek dan menyeret model, bahan, dan sumber daya lainnya ke dalam editor tab untuk menempatkan mereka di dunia game.
- Hirarki: tab ini menunjukkan semua objek di dunia, memungkinkan Anda untuk menemukan objek yang jauh di dalam adegan, dan entitas induk satu sama lain dengan mengklik dan menarik.
Lihat diagram di bawah untuk lokasi semua hal ini:
4.1 Entitas Kesatuan
4.1.1 Jerat
Jerat adalah jalannya Geometri 3D diwakili dalam Unity. Anda bisa menggunakan bawaan Unity primitif benda (kubus, bola, silinder, dll), atau impor model 3D Anda sendiri dari paket pemodelan seperti Blender Memulai dengan Blender: 7 Tutorial Fantastis untuk PemulaPemodelan 3D adalah cara terbaik untuk melatih kreativitas sambil tetap berhubungan dengan sisi teknis Anda. Berikut adalah beberapa tutorial gratis yang luar biasa. Baca lebih banyak atau Maya Learning Maya 2016: Tempat MemulaiMaya adalah alat yang digunakan untuk animasi 3D, tetapi dilengkapi dengan kurva belajar yang sangat curam. Materi pengajaran apa yang bagus di sana? Baca lebih banyak . Unity mendukung berbagai format 3D, termasuk .fbx, dan .3ds.
Alat dasar untuk memanipulasi jerat adalah penskalaan, rotasi, dan tombol terjemahan di sudut kiri atas antarmuka. Tombol-tombol ini menambahkan ikon kontrol ke model dalam tampilan editor, yang kemudian dapat digunakan untuk memanipulasi mereka di ruang angkasa. Untuk mengubah tekstur atau sifat fisika dari suatu objek, pilih dan gunakan inspektur lihat untuk menganalisis bahan dan benda tegar elemen.
4.1.2 Elemen GUI
Sprite dan teks GUI tradisional dapat ditampilkan menggunakan Teks GUI dan Tekstur GUI GameObjects di editor. Namun, cara yang lebih kuat dan realistis untuk menangani elemen UI adalah dengan menggunakan Teks 3D dan Quad GameObjects (dengan tekstur transparan dan shader transparan yang tidak menyala) untuk menempatkan elemen HUD ke dalam dunia game sebagai entitas.
Dalam hirarki lihat, elemen-elemen gameplay ini dapat diseret ke kamera utama untuk menjadikan mereka anak-anak, memastikan bahwa mereka bergerak dan berputar dengan kamera.
Elemen GUI (teks dan tekstur) dapat disesuaikan ukuran dan skalanya menggunakan bidang yang relevan di tab inspektur.
4.1.3 Bahan
Bahan adalah kombinasi dari tekstur dan shader Lima Istilah Penting Gaming PC DijelaskanJika Anda memainkan game di konsol, detail teknisnya ditangani untuk Anda. Beberapa pemain lebih suka ini, tetapi gamer PC sering menikmati tingkat kontrol yang lebih besar yang mereka miliki atas mata gim ... Baca lebih banyak , dan dapat diseret langsung ke objek game dari tab proyek. Sejumlah besar shader datang dengan Unity Pro, dan Anda dapat menyesuaikan tekstur yang melekat padanya menggunakan tab inspektur untuk objek yang mereka gunakan.
Untuk mengimpor tekstur, konversikan ke a .jpg, .png, atau .bmp, dan seret ke aktiva folder di bawah direktori proyek Unity (yang muncul di Dokumen-dokumen saya secara default). Setelah beberapa detik, bilah pemuatan akan muncul di editor. Saat selesai, Anda akan dapat menemukan gambar sebagai tekstur di bawah proyek tab.
4.1.5 Lampu
Lampu adalah GameObjects yang memproyeksikan cahaya ke dunia. Jika tidak ada lampu dalam adegan Anda, semua poligon digambar pada tingkat kecerahan yang sama, memberi dunia tampilan yang rata dan luntur.
Lampu dapat diposisikan, diputar, dan memiliki beberapa karakteristik internal yang dapat Anda sesuaikan. Itu intensitas slider mengontrol kecerahan cahaya, dan jarak mengontrol seberapa cepat ia memudar.
Pedoman dalam pemandangan menunjukkan jangkauan pencahayaan maksimum. Mainkan dengan kedua pengaturan untuk mencapai efek yang diinginkan. Anda juga dapat menyesuaikan warna cahaya, polanya (Kue kering ditampilkan pada permukaan yang ditunjuk oleh cahaya, dan suar jenis apa yang muncul di layar ketika melihat langsung ke arah cahaya. Cookie dapat digunakan untuk memalsukan pola cahaya yang lebih realistis, membuat bayangan palsu yang dramatis, dan mensimulasikan proyektor.
Tiga jenis utama cahaya adalah titik, titik, dan directional.
Lampu sorot memiliki lokasi dalam ruang 3D dan cahaya proyek hanya dalam satu arah dalam kerucut sudut variabel. Ini bagus untuk lampu senter, lampu sorot, dan, secara umum, memberi Anda kontrol pencahayaan yang lebih tepat. Lampu sorot bisa menimbulkan bayangan.
Lampu point memiliki lokasi dalam ruang 3D, dan melemparkan cahaya secara merata ke segala arah. Lampu point tidak menghasilkan bayangan.
Lampu arah, akhirnya, digunakan untuk mensimulasikan sinar matahari: mereka memproyeksikan cahaya ke arah seolah-olah dari jauh jauh. Lampu terarah memengaruhi setiap objek dalam adegan, dan dapat menghasilkan bayangan.
4.1.6 Sistem Partikel
SEBUAH Sistem partikel adalah GameObject yang menghasilkan dan mengendalikan ratusan atau ribuan partikel secara bersamaan. Partikel adalah benda 2D kecil yang dioptimalkan yang ditampilkan dalam ruang 3D. Sistem partikel menggunakan rendering dan fisika yang disederhanakan, tetapi dapat menampilkan ribuan entitas secara real time tanpa gagap, menjadikannya ideal untuk asap, api, hujan, percikan api, efek sihir, dan banyak lagi.
Ada banyak parameter yang dapat Anda atur untuk mencapai efek ini, dan Anda dapat mengaksesnya dengan menelurkan sistem partikel di bawah editor komponen > memilih sistem partikel > membuka tab inspektur. Anda dapat mengubah ukuran, kecepatan, arah, rotasi, warna, dan tekstur masing-masing partikel, dan mengatur sebagian besar parameter tersebut untuk berubah dari waktu ke waktu juga.
Di bawah tabrakan atribut, jika Anda mengaktifkannya dan mengatur ruang simulasi dunia Anda akan mendapatkan partikel yang akan bertabrakan dengan benda-benda di dunia, yang dapat digunakan untuk sejumlah efek partikel realistis, termasuk hujan, air yang bergerak, dan bunga api.
5. Contoh: Elemen Dasar dari Gim
Untuk tutorial ini, kami akan membuat gim sederhana Pong - sesuatu yang telah kami bahas beberapa kali di DIY sebelumnya:
- Arduino Classic Pong Cara Membuat Game Pong Klasik Menggunakan ArduinoPong adalah videogame pertama yang mencapai pasar massal. Untuk pertama kalinya dalam sejarah, konsep "video game" dibawa ke rumah keluarga, berkat Atari 2600 - ... Baca lebih banyak
- Arduino OLED Pong Arduino Retro Gaming Dengan Layar OLEDPernah bertanya-tanya seberapa banyak yang diperlukan untuk menulis game retro Anda sendiri? Seberapa mudah Pong untuk kode untuk Arduino? Baca lebih banyak
Di bagian ini, kita akan membahas mengatur elemen inti - tutorial skrip akan muncul nanti.
Pertama, mari kita pecahkan permainan Pong menjadi komponen dasarnya. Pertama, kita membutuhkan dua dayung, dan sebuah bola. Bola terbang di luar layar, jadi kami ingin mekanisme untuk menyetelnya kembali. Kami juga ingin teks menampilkan skor saat ini, dan, demi menunjukkan kepada Anda semua elemen inti dari Unity, kami ingin efek partikel mewah ketika Anda memukul bola. Seluruh permainan harus dinyalakan secara dramatis.
Itu terurai menjadi a objek bola (sebuah bola), a spawner, dua alat peraga dayung dengan penghasil partikel terlampir, a Entitas teks-3D, dan a spot light. Untuk tutorial ini, kami akan menggunakan materi fisik default melambung, dengan bouncing bergabung mulai berkembang biak. Seperti apa bentuk pengaturannya, dalam sepuluh tangkapan layar:
Pertama, buat a prop kubus untuk dayung.
Skala itu dengan tepat, duplikat itu, dan letakkan a bola antara dayung untuk bola.
Lalu, buat a Objek 3DText dan skala dan posisi dengan benar, mengubah ukuran huruf atribut untuk mendapatkan gambar yang kurang pixelated.
Selanjutnya, buat dua sistem partikel, pilih karakteristik yang Anda inginkan, dan pasang ke dayung.
Selanjutnya, Anda pasti mau posisikan dan putar kamera sehingga membingkai adegan dengan benar. Saat kamera dipilih, Anda dapat melihat pratinjau kecil dari tampilan kamera di sudut kanan bawah.
Sebelum kita selesai, kita perlu membuat dua kubus tambahan untuk menjadi bumper, untuk mencegah bola memantul keluar dari area permainan. Kita dapat membuatnya tidak terlihat dengan menghapus centang pada penyaji mesh dalam tab inspektur.
Jika Anda menekan tombol play, sekarang Anda dapat melihat elemen-elemen dasar permainan kami ditata. Mereka tidak akan melakukan apa pun, tapi kita akan sampai ke sana!
Sekarang setelah kita mendapatkan pengaturan itu, kita akan berbicara tentang apa yang terlibat dalam pembuatan skrip elemen-elemen ini untuk membuat game.
6. Scripting dalam Persatuan
Setelah Anda memiliki skrip yang dilampirkan pada objek, Anda dapat merevisinya dengan mengklik dua kali di objek inspektur. Ini terbuka MonoDevelop, lingkungan pengembangan default untuk Unity. Intinya, Monodevelop adalah editor teks dengan fitur yang secara khusus dioptimalkan untuk pemrograman.
Kata kunci dan komentar disorot dalam biru dan hijau, dan nilai numerik dan string muncul di merah. Jika Anda sudah terbiasa Gerhana atau IDE lain, MonoDevelop sangat mirip. Kamu bisa membangun skrip Anda dari dalam editor, untuk memeriksa kesalahan sintaksis, seperti:
Secara umum, untuk membuat skrip Anda berinteraksi dengan Unity, Anda harus merujuk elemen yang dimiliki objek yang dimiliki skrip (Anda dapat melihat daftar elemen ini di bawah inspektur tab ketika objek yang relevan dipilih). Anda kemudian dapat memanggil metode atau mengatur variabel untuk masing-masing elemen ini untuk memberlakukan perubahan yang Anda inginkan.
Jika Anda ingin skrip pada objek mempengaruhi properti dari objek yang berbeda, Anda bisa membuat yang kosong GameObject variabel dalam skrip Anda, dan gunakan inspektur untuk menetapkannya ke objek lain dalam adegan.
Daftar elemen yang mungkin dimiliki objek adalah sebagai berikut (diambil dari tampilan inspektur salah satu dayung kami dalam contoh di atas):
- Mengubah
- Cube (Filter Mesh)
- Box Collider
- Penyaji Mesh
Masing-masing aspek objek dapat dipengaruhi dari dalam naskah. Selanjutnya, kita akan melihat bagaimana tepatnya.
6.1 Transformasi
Fungsi transformasi untuk GameObject di Unity mengontrol parameter fisik objek itu: nya skala, itu posisi, dan itu orientasi. Anda dapat mengaksesnya dari dalam skrip seperti ini:
transform.position = newPositionVector3; transform.rotation = newRotationQuaternion; transform.localScale = newScaleVector3;
Dalam contoh di atas, variabel yang dinamai adalah tipe yang ditentukan dalam nama. Ada beberapa detail utama di sini: posisi dan skala, seperti yang Anda harapkan, disimpan sebagai Vector3s. Anda dapat mengakses X, Y, dan Z komponen masing-masing (misalnya, transform.position.y memberi Anda jarak objek di atas bidang nol).
Namun, harus dihindari kunci gimbal, rotasi ditangani sebagai Pertanyaan (vektor empat komponen). Karena angka empat yang memanipulasi tangan tidak intuitif, Anda dapat memanipulasi rotasi menggunakan sudut Euler dengan menggunakan Angka empat. Euler Metode seperti ini:
transform.rotation = Quaternion. Euler (pitch, yaw, roll);
Jika Anda ingin memindahkan objek dengan lancar dari satu tempat ke tempat lain, Anda akan menemukan Slerp metode untuk angka empat dan vector3s bermanfaat. Slerp mengambil tiga argumen - keadaan saat ini, keadaan akhir, dan kecepatan perubahan, dan dengan lancar menyisipkan di antara mereka pada kecepatan yang diberikan. Sintaksnya terlihat seperti ini:
transform.position = Vector3.Slerp (startPositionVector3, newDestinationVector3, 1);
6.2 Renderer
Fungsi penyaji di Unity memungkinkan Anda untuk mengontrol cara permukaan alat peraga ditampilkan di layar. Anda dapat menetapkan ulang tekstur, mengubah warna, dan mengubah shader dan visibilitas objek. Sintaksnya terlihat seperti ini:
renderer.enabled = false; renderer.material.color = Warna baru (0, 255, 0); renderer.material.mainTexture = myTexture; renderer.material.shader = newShader;
Sebagian besar memiliki fungsi yang cukup jelas. Contoh pertama membuat objek yang dimaksud tidak terlihat: trik yang berguna dalam sejumlah situasi. Contoh kedua memberikan yang baru Warna rgb (Yaitu, hijau) ke objek yang dimaksud. Yang ketiga memberikan tekstur difus utama ke variabel Tekstur baru. Contoh terakhir mengubah shader material objek ke variabel shader yang baru didefinisikan.
6.3 Fisika
Unity hadir dengan mesin fisika terintegrasi - sesuatu yang permainan fisika kotak pasir Smash, Drive & Build: 3 Simulator Sandbox Fisika Luar Biasa Baca lebih banyak semua digunakan. Ini memungkinkan Anda untuk menetapkan properti fisik objek dan membiarkan detail simulasi mereka ditangani untuk Anda. Secara umum, daripada mencoba menerapkan fisika Anda sendiri menggunakan buku teks dan sistem transformasi, lebih mudah dan lebih kuat untuk menggunakan mesin fisika Unity sejauh mungkin.
Semua alat peraga fisika membutuhkan colliders. Namun, simulasi itu sendiri ditangani oleh a benda tegar, yang dapat ditambahkan di inspektur melihat. Rigidbodies bisa jadi kinematis atau nonkinematic.
Alat peraga fisika kinematik bertabrakan dengan (dan efek) alat peraga fisika nonkinematik di sekitarnya, tetapi tidak terpengaruh oleh benturan itu sendiri. Alat peraga kinematik statis adalah objek tak bergerak yang dapat diucapkan, dan objek kinematika yang bergerak adalah objeknya pepatah kekuatan tak terhentikan (sebagai catatan, ketika mereka bertabrakan, mereka hanya melewati masing-masing lain).
Di luar itu, Anda dapat mengatur tarikan sudut objek (berapa banyak energi yang diperlukan untuk memutarnya), mengubah massanya, menentukan apakah itu dipengaruhi oleh gravitasi atau tidak, dan menerapkan gaya pada benda tersebut.
Contoh:
rigidbody.angularDrag = 0.1f; rigidbody.mass = 100; rigidbody.isKinematic = false; rigidbody.useGravity = true; benda tegar. AddForce (transform.forward * 100);
Ini semua cukup jelas. Satu-satunya hal yang perlu diperhatikan di sini adalah penggunaan transformasikan ke depan. Semua Vector3 memiliki tiga komponen (.meneruskan, .naik, dan .Baik) terkait dengan mereka, yang dapat diakses dan berputar dengannya (meneruskan adalah arah panah biru di editor). Itu transformasikan ke depan kata kunci hanyalah vektor maju untuk objek saat ini dengan magnitudo 1. Ini dapat dikalikan dengan float untuk menciptakan lebih banyak kekuatan pada objek. Anda juga bisa referensi transform.up dan benar, dan meniadakan mereka untuk mendapatkan pembalikan mereka.
6.4 Tabrakan
Seringkali, saat membuat gim, Anda ingin tabrakan untuk menghasilkan perubahan status dalam kode Anda, di luar hanya simulasi fisika. Untuk ini, Anda perlu a metode deteksi tabrakan.
Ada sejumlah pekerjaan persiapan yang diperlukan untuk mendeteksi tabrakan di Unity. Pertama, setidaknya salah satu objek dalam tabrakan membutuhkan a benda tegar non-kinematik melekat padanya. Kedua objek harus memiliki collider yang benar, ditetapkan menjadi non-trigger. Kecepatan total kedua objek harus cukup rendah sehingga mereka benar-benar bertabrakan, bukan hanya saling melompati satu sama lain.
Jika Anda sudah mendapatkan semua yang diurus, Anda dapat memeriksa tabrakan dengan menempatkan metode deteksi tabrakan khusus dalam skrip yang dilampirkan ke objek yang ingin Anda periksa tabrakan. Metode akan terlihat seperti ini:
membatalkan OnCollisionEnter (Tabrakan lainnya) {// lakukan hal-hal di sini. }
Metode ini secara otomatis akan berjalan selama frame pertama yang menyentuh objek lain objek Anda. Entitas tabrakan lain adalah referensi ke objek yang Anda tekan. Anda dapat, misalnya, referensi gameobject, benda tegar, dan mengubah karakteristik untuk memanipulasi dengan berbagai cara. Sementara OnCollisionEnter mungkin merupakan fungsi paling umum yang akan Anda gunakan, Anda juga dapat menggunakan OnCollisionExit dan OnCollisionStay (dengan sintaks dan penggunaan yang identik), yang aktif selama frame pertama yang Anda hentikan bertabrakan dengan objek dan selama setiap frame yang Anda bertabrakan dengan objek, masing-masing.
Terkadang, juga berguna untuk melakukan apa yang disebut raycasting. Dalam raycasting, garis tipis tanpa batas (a sinar) dilemparkan melalui dunia dari beberapa asal, sepanjang beberapa vektor, dan, ketika mengenai sesuatu, posisi dan detail lain dari tabrakan pertama dikembalikan. Kode untuk raycast terlihat seperti ini:
Hit RaycastHit; jika (Fisika. Raycast (transform.position, -Vector3.up, out hit)) {float distanceToGround = hit.distance; }
Ini melemparkan sinar dari posisi objek saat ini di sepanjang -Vector3.up (lurus ke bawah), dan menghubungkan variabel memukul ke objek pertama yang bertabrakan dengannya. Setelah ray Anda mengenai sesuatu, Anda dapat mengakses hit untuk menentukan seberapa jauh jaraknya, atau memukul. GameObject untuk memanipulasi objek yang Anda tekan.
Raycast seperti ini dapat digunakan untuk penembak untuk menentukan apa yang diarahkan oleh pistol, atau untuk memilih objek ketika kamera melihatnya, atau untuk gaya gerak mekanik tertentu.
6.5 Koreksi Waktu
Salah satu faktor penting yang perlu diingat ketika Anda memanipulasi objek dengan cara ini ada hubungannya dengan framerate. Tidak peduli seberapa hati-hati Anda mengoptimalkan, framerate akan selalu bervariasi, dan Anda tidak ingin kecepatan gim Anda berubah-ubah. Jika orang lain menjalankan game Anda di komputer yang lebih cepat daripada yang Anda kembangkan, Anda tidak ingin game berjalan dengan kecepatan ganda.
Cara Anda mengoreksi hal ini adalah dengan mengalikan nilai yang Anda gunakan pada waktu yang diperlukan untuk merender frame terakhir. Ini dilakukan dengan menggunakan Time.deltaTime. Ini secara efektif mengubah kecepatan variabel apa pun yang Anda incrementing setiap frame ubah per bingkai untuk ubah per detik, dan Anda mungkin harus melakukan perubahan ini ke nilai apa pun yang Anda incrementing atau decrementing setiap frame.
6.6 Sumber Audio dan Pendengar
Sekarang kita telah membahas cara membuat, membuat, dan mengontrol objek, mari kita bicara tentang pengertian lain yang bisa dilayani oleh permainan komputer: yaitu, suara. Unity mendukung dua jenis suara: 2D dan 3D terdengar. Suara 3D memvariasikan volumenya berdasarkan jarak, dan mendistorsi saat bergerak relatif ke kamera; Suara 2D tidak.
Suara 2D sesuai untuk suara-over dan musik latar, dan suara 3D berlaku untuk suara yang dihasilkan oleh peristiwa di dunia. Untuk mengubah apakah suara itu 3D, pilih di proyek lihat, alihkan ke inspektur lihat dan pilih opsi yang sesuai dari menu dropdown, lalu tekan tombol impor kembali tombol.
Untuk benar-benar memutar suara, Anda harus melampirkan sumber suara ke prop (prop Anda ingin suara berasal, dalam hal suara 3D). Maka Anda harus membuka klip audio bidang dan pilih file suara Anda.
Kamu dapat memakai myAudioSource. Jeda () dan myAudioSource. Bermain() untuk mengontrol file suara tersebut. Anda dapat menyesuaikan perilaku falloff, volume, dan pergeseran doppler suara di bawah inspektur tab untuk sumber audio.
6.7 Masukan
Gim yang tidak menerima masukan dari pengguna tidak banyak gim. Ada banyak jenis input yang dapat Anda baca, dan hampir semuanya dapat diakses melalui Memasukkan dan Kata kunci benda. Beberapa pernyataan input sampel (yang memiliki nilai yang dievaluasi setiap frame) ada di bawah ini.
Vector3 mousePos = Input.mousePosition; bool isLeftClicking = Input. GetMouseButton (0); bool isPressingSpace = Input. GetKey (KeyCode. Ruang);
Fungsi garis-garis ini sebagian besar cukup jelas. Dengan menggunakan ketiga jenis referensi input ini, Anda dapat merekonstruksi skema kontrol dari kebanyakan game komputer 3D modern.
6.8 Debugging a Script
Katakanlah skrip tidak berfungsi. Seperti kata dokter yang baik, bangup dan hangup dapat terjadi pada Anda. Jika ada kesalahan sintaksis langsung dengan C # Anda, gim umumnya akan menolak untuk berjalan saat Anda menekan tombol play, dan beberapa pesan kesalahan yang cukup berguna disediakan jika Anda membangun skrip dari dalam editor. Lihat di bawah:
Bug ini biasanya bukan yang paling sulit untuk diperbaiki. Apa yang bisa lebih bermasalah adalah kesalahan semantik halus, di mana Anda telah berhasil menulis file yang penuh dengan C # yang valid - hanya saja tidak ada yang melakukan apa yang Anda pikir akan melakukannya. Jika Anda memiliki salah satu kesalahan ini, dan Anda kesulitan melacaknya, ada beberapa hal yang dapat Anda coba untuk memperbaiki situasi.
Yang pertama adalah untuk menghentikan eksekusi permainan, dan memeriksa konsol. Anda dapat menjeda game dengan mengklik pada jeda ikon di bagian tengah atas dari editor, lalu pilih menghibur dari bawah jendela menu (atau menekan Ctrl > Bergeser > C). Bahkan jika tidak ada kesalahan, peringatan masih dapat membantu memberikan beberapa petunjuk tentang apa yang salah.
Jika ini tidak berhasil, Anda juga dapat mencoba mendapatkan beberapa gagasan tentang keadaan skrip Anda dengan mencetak status variabel internal untuk memvalidasi bahwa program tersebut melakukan apa yang menurut Anda sedang dilakukan. Kamu dapat memakai Debug. Log (String) untuk mencetak konten string ke konsol ketika eksekusi program mencapai garis itu. Secara umum, jika Anda bekerja mundur dari apa yang Anda pikir seharusnya terjadi melalui hal-hal yang seharusnya mewujudkannya, pada akhirnya Anda akan mencapai titik di mana hasil debug Anda tidak melakukan apa yang Anda harapkan melakukan. Di situlah kesalahan Anda.
7. Contoh: Scripting Pong
Untuk membangun Pong, mari kita pecahkan permainan menjadi elemen intinya: kita membutuhkan bola yang memantul bolak-balik di antara dayung untuk meningkatkan kecepatan, kita membutuhkan papan skor yang tahu kapan bola telah melewati dayung, dan kita membutuhkan mekanisme untuk memulai kembali bola saat itu terjadi Langkah pertama yang baik adalah menambahkan benda tegar non-kinematik ke bola, dua benda tegar kinematik ke dayung, nonaktifkan gravitasi untuk semuanya, dan tetapkan bahan fisik yang sesuai dari aset standar (melambung dengan bouncing bergabung mulai berkembang biak).
Di bawah, Anda dapat melihat skrip bola dengan komentar yang jelas. Bola harus mencapai beberapa tujuan dasar: bola harus memantul dalam pola yang rumit, selalu mempertahankan gerakan pada kedua sumbu, dan harus mempercepat pada kecepatan yang menantang tetapi tidak mustahil di horizontal arah.
BallHandler.cs
Selanjutnya, kita perlu membuat skrip dayung kami, yang dapat Anda lihat di bawah. Dayung perlu bergerak ke atas dan ke bawah sebagai respons terhadap penekanan tombol (tetapi tidak di luar batas tertentu). Ia juga perlu memicu sistem partikel ketika bertabrakan dengan sesuatu.
PaddleHandler.cs
Selanjutnya, kita membutuhkan AI musuh: sesuatu yang akan menyebabkan dayung musuh untuk melacak bola dengan kecepatan tetap. Untuk itu, kami akan menggunakan Vector3.Slerp untuk kesederhanaan maksimum. Kami juga menyukai perilaku partikel yang sama yang kami lihat di dayung kami sendiri.
EnemyAI.cs
Akhirnya, kami membutuhkan skrip untuk memperbarui papan skor dan mengatur ulang bola saat keluar batas.
ScoreboardUpdater.cs
Dengan skrip-skrip yang dilampirkan dan referensi diisi, ketika kami menjalankan permainan Pong kami, kami mengalami gameplay!
Kamu bisa unduh demo Pong saya, jika Anda ingin melihat semua yang saya uraikan dalam tindakan. Ini berjalan pada sistem Windows, Mac dan Linux.
8. Menjelajahi Dokumentasi / Belajar Lebih Lanjut
Unity adalah mesin yang kompleks dengan banyak fitur lebih dari yang bisa dicakup dalam panduan gaya ini, dan itu sebelum Anda memasukkan banyak ekstensi Unity (gratis dan komersial) yang tersedia di Internet Internet. Panduan ini akan memberi Anda tempat awal yang kuat untuk mengembangkan permainan, tetapi pendidikan mandiri adalah keterampilan yang penting dalam setiap upaya, dan dua kali lipat jadi di sini.
Sumber daya penting di sini adalah Unity ScriptReference. ScriptReference adalah database yang dapat dicari, tersedia untuk C # dan Javascript, yang memiliki daftar setiap perintah dan fitur Unity, dengan deskripsi fungsi dan contoh singkatnya sintaksis.
Jika Anda mengalami masalah dengan editor dan antarmuka Unity, atau seperti tutorial video sebagai pilihan, ada daftar panjang berkualitas tinggi Tutorial video kesatuan Tutorial 3D Unity Terbaik untuk PemulaIngin mengembangkan game dengan Unity, tetapi tidak tahu harus mulai dari mana? Cobalah salah satu tutorial 3D Unity yang mengagumkan hari ini. Baca lebih banyak tersedia. Lebih luas (tapi kurang luas) tutorial teks untuk Unity juga tersedia dari CatLikeCoding.
Terakhir, jika Anda memiliki pertanyaan di luar lingkup dokumentasi atau tutorial, Anda dapat mengajukan pertanyaan khusus di jawaban. Unity3d.com. Ingat bahwa jawaban diberikan oleh sukarelawan, jadi hormati waktu mereka dan cari basis data terlebih dahulu untuk memastikan pertanyaan Anda belum dijawab.
9. Membangun Game Anda / Mengkompilasi ke Aplikasi Standalone
Saat Anda membuat sesuatu yang Anda banggakan (atau Anda sudah selesai mengkloning contoh Pong kami yang sedikit cerdik untuk latihan), saatnya untuk pindahkan game Anda dari editor dan mengubahnya menjadi sesuatu yang dapat Anda poskan di internet dan memaksa teman dan keluarga Anda untuk melakukannya bermain. Untuk melakukan itu, Anda harus membangun aplikasi mandiri. Berita baiknya adalah bahwa di Unity, ini sangat, sangat mudah. Namun, ada beberapa kemungkinan cegukan yang ingin Anda berhati-hati.
Sebagai permulaan, ketahuilah bahwa Anda hanya dapat membangun proyek yang bebas kesalahan. Untuk itu, pastikan konsol Anda terbuka saat Anda membangun: ada beberapa kondisi kesalahan yang akan diabaikan gim di dalam editor, tetapi masih akan membatalkan upaya pengembangan. Ini hanya mengirim pesan kesalahan ke konsol, tanpa ada hasil yang terlihat di layar, yang bisa membuat frustasi jika Anda lupa untuk memeriksanya. Namun, setelah permainan dikompilasi tanpa kesalahan, Anda dapat memilih Pengaturan Bangun di bawah Mengajukan menu, atau tekan Ctrl > Bergeser
> B. Ini akan memunculkan dialog sederhana yang memungkinkan Anda membuat game untuk beberapa platform.
Proses dari sana cukup jelas: pilih opsi Anda, dan tekan membangun; gim ini akan meminta Anda untuk memasang direktori, dan akan menempatkan direktori yang dapat dieksekusi dan data di sana. Kedua file ini dapat di-zip bersama dan didistribusikan (pastikan Anda tidak mengenakan biaya untuk game yang dibuat di demo Unity, karena ini melanggar ketentuan layanan).
10. Catatan Penutup
Seperti halnya alat pengembangan game apa pun, kunci sukses dengan Unity adalah pengembangan berulang. Anda harus membangun peningkatan bertahap - menjadi ambisius, dengan segala cara, tetapi menjadi ambisius dalam potongan-potongan kecil, dan mengatur potongan-potongan sedemikian rupa sehingga, bahkan jika Anda gagal ambisi utama Anda, Anda setidaknya akan berakhir dengan koheren produk.
Dapatkan elemen yang paling penting terlebih dahulu: pikirkan ide Anda produk minimum yang layak, hal paling sederhana, paling sederhana yang bisa Anda buat dan masih merasa seolah-olah Anda mencapai sesuatu yang berharga. Dapatkan proyek minimum yang layak sebelum pindah ke ambisi yang lebih besar.
Tutorial ini memberi Anda tempat awal yang kuat, tetapi cara terbaik untuk belajar Unity adalah dengan membangun game. Mulailah membangun sebuah game, mengisi kekosongan dalam pengetahuan Anda saat mereka muncul, dan aliran pengetahuan secara bertahap akan mengikis hal-hal yang tidak Anda ketahui secara mengejutkan dengan cepat.
Jika Anda sudah membaca semua ini dan sedikit kewalahan oleh pengkodean yang diperlukan dengan Unity, pastikan Anda memeriksa caranya belajar pengembangan game dengan Unity Learn Unity Learn adalah Cara termudah untuk Menguasai Pengembangan GameIngin mulai mengembangkan game sendiri? Unity Learn adalah cara terbaik dan termudah untuk belajar dan menguasai apa yang perlu Anda ketahui. Baca lebih banyak dan juga baca panduan kami di cara membuat video game tanpa pemrograman apa pun Cara Membuat Video Game Tanpa Pemrograman Apa PunIngin membuat video game tetapi tidak bisa kode? Kemudian gunakan kit konstruksi gim video yang memungkinkan Anda membuat gim tanpa perlu kode apa pun! Baca lebih banyak .
Unity adalah alat yang ampuh, dan dengan sedikit eksplorasi, Anda dapat membangun proyek yang mengesankan dengan lebih cepat dari yang Anda harapkan. Beri tahu kami apa yang Anda buat dalam komentar di bawah ini - kami ingin sekali melihatnya!
Seorang penulis dan jurnalis yang berbasis di Barat Daya, Andre dijamin tetap fungsional hingga 50 derajat Celcius, dan tahan air hingga kedalaman dua belas kaki.