Memprogram Game Dengan Unity: Panduan Pemula

Memprogram Game Dengan Unity: Panduan Pemula
Panduan ini tersedia untuk diunduh sebagai PDF gratis. Unduh file ini sekarang . Jangan ragu untuk menyalin dan membagikan ini dengan teman dan keluarga Anda.

Fitur mengejutkan dari ekonomi internet adalah munculnya videogame indie. Dulunya merupakan domain eksklusif studio triple-A yang berjumlah ribuan orang dan bernilai jutaan dolar, sejumlah perangkat telah dikembangkan yang membawa sumber daya pengembangan game modern ke tangan individu atau kumpulan kecil pemrogram dan desainer. Kami sebelumnya telah membahas game indie terbaik , jadi pastikan Anda memeriksanya untuk mendapatkan inspirasi tentang apa yang dapat dicapai dengan 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 anggaran besar mereka. Sejumlah judul indie yang sangat sukses telah ditayangkan perdana dalam beberapa tahun terakhir, termasuk Minecraft , limbo , dan Anak Daging Super , dan bahkan jika Anda tidak memiliki keterampilan untuk membuat game seperti ini, Anda dapat membuat game menggunakan Buildbox .





Dalam lanskap pengembangan game indie yang berkembang pesat, Persatuan telah muncul sebagai sesuatu dari standar de-facto: biaya rendah, kemudahan penggunaan, dan set fitur yang luas membuatnya ideal untuk pengembangan game yang cepat. Persatuan sangat fleksibel, sehingga Anda bahkan bisa buat pengontrol permainan khusus Anda sendiri dengan sedikit DIY tahu caranya!





Bahkan studio besar seperti CCP (Developer of .) malam online ) menggunakannya untuk membuat prototipe konsep game dengan cepat. Unity menyediakan 'mesin permainan dalam kotak' -- mesin fisika dan rendering dengan kait untuk beberapa bahasa skrip, yang dapat disesuaikan dengan hampir semua genre videogame.

Meskipun Unity menyediakan editor visual untuk memanipulasi lingkungan game, Unity bukanlah alat pembuat game 'pemrograman nol'. Ini mengharuskan Anda memprogram untuk menghasilkan hasil, tetapi juga memberi Anda alat yang jauh lebih fleksibel dan kuat daripada program 'pembuat game' mana pun.



Unity tidak akan bekerja untuk Anda, tetapi itu menurunkan hambatan masuk secara substansial. Memulai sepenuhnya dari awal dengan C++ dan OpenGL, perlu waktu berhari-hari untuk sampai pada 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 memandu Anda melalui semua yang perlu Anda ketahui untuk membuat game di Unity, yang dibagi menjadi sepuluh bab utama:





1–Versi Persatuan

2–Menginstal Unity





3–Pengantar Singkat Paradigma Berorientasi Objek

4–Dasar-dasar Persatuan

5–Contoh: Elemen Dasar Game

6–Menulis dalam Kesatuan

7–Contoh: Scripting Pong

8–Menjelajahi Dokumentasi / Mempelajari Lebih Lanjut

9–Membangun Game Anda / Mengkompilasi ke Aplikasi Mandiri

10-Catatan Penutup

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 peningkatan visual (seperti bayangan lembut real-time dan pasca-pemrosesan), dan sejumlah besar fitur yang relatif kecil yang sangat membantu untuk game yang lebih kompleks.

Meskipun demikian, untuk sebagian besar game yang relatif sederhana yang mungkin ingin Anda buat, versi gratis Unity sudah sangat memadai. Kami akan merinci perbedaan utama di bawah ini secara lebih rinci bagi 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 menduga Anda mungkin menjadi organisasi semacam itu, mungkin bijaksana untuk menggunakan versi Pro.

Versi Pro dari Unity adalah sebulan, atau 00 untuk lisensi permanen, dan tidak membatasi apa yang dapat Anda lakukan dengan game yang dibuat dengannya. Ada juga uji coba gratis 30 hari yang tersedia, yang akan kami gunakan untuk panduan ini, untuk memberi Anda gambaran lengkap tentang fitur yang tersedia. Lisensi pelajar satu tahun juga tersedia melalui Belajar untuk 9 .

1.2 Fitur

Ada banyak fitur yang tidak ada di Unity versi gratis. Namun, perbedaan yang paling penting adalah sebagai berikut: versi gratis Unity tidak memiliki sejumlah opsi rendering yang memungkinkan untuk tampilan yang lebih baik, game yang berjalan lebih cepat (dukungan LOD, pasca-pemrosesan ruang layar, shader canggih, soft real-time bayangan, dan rendering yang ditangguhkan). Itu juga kurang lengkap sistem animasi mekanisme , dan beberapa alat AI.

Secara umum, untuk proyek skala besar yang kompleks, atau proyek di mana kinerja grafis penting, versi pro bermanfaat. Saya menggunakan versi pro, karena saya mengembangkan game realitas virtual untuk Oculus Rift , dan dukungan pasca-pemrosesan ruang layar diperlukan untuk berinteraksi dengan headset dengan benar.

2. Memasang Unity

Unity mudah dipasang. Anda dapat mengunduh yang dapat dieksekusi dari unity3d.com/get-unity/download .

Setelah diunduh, jalankan, lalu ikuti petunjuk penginstal. Ketika instalasi selesai, sebuah jendela berjudul 'aktifkan lisensi Unity Anda' akan muncul. Centang kotak bertanda 'aktifkan uji coba gratis Unity Pro selama 30 hari' 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.

cara meminta maaf secara profesional dalam email

3. Pengantar Singkat Paradigma Berorientasi Objek

Sebelum memulai Unity, penting bagi kita untuk membahas dasar-dasarnya sedikit. Persatuan mendukung keduanya C # dan JavaScript untuk pemrograman permainan ; kita akan bekerja dengan C# untuk tutorial ini.

Pertama, jika Anda belum pernah memprogram sebelumnya, kesampingkan tutorial ini dan habiskan beberapa hari untuk mempelajari Microsoft C # Dasar Bahasa sampai Anda merasa nyaman menggunakan bahasa tersebut untuk tugas-tugas sederhana.

Jika Anda menginginkan sesuatu yang sedikit berbeda dengan C# (tetapi belum tentu bahasa yang dapat Anda gunakan di Unity), lihat panduan kami tentang enam bahasa pemrograman termudah untuk pemula .

Jika Anda telah memprogram sebelumnya dalam bahasa imperatif atau bahasa berorientasi objek seperti C atau Java, baca sekilas primer dan biasakan diri Anda dengan perbedaan C# dari bahasa lain yang pernah Anda gunakan sebelumnya. Either way, jangan melanjutkan tutorial sampai Anda merasa nyaman memecahkan masalah sederhana dengan C# (misalnya, jika saya meminta Anda untuk menulis sebuah program yang mencetak seratus bilangan prima pertama, Anda harus dapat menulis program itu tanpa berkonsultasi dengan Google).

Konsep yang paling penting untuk dipahami di sini adalah paradigma berorientasi objek (disingkat MEMBUKA ). Dalam bahasa berorientasi objek, program dibagi menjadi unit fungsional yang disebut Objek . Setiap objek memiliki variabel dan fungsi pribadinya sendiri. Fungsi khusus objek disebut metode .

Idenya di sini adalah modularitas: dengan membuat setiap 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 membuat objek-objek ini dan menempelkannya ke entitas permainan (yang perilakunya akan mereka atur).

Objek dibuat dari kelas : kelas hanyalah file yang menjabarkan definisi objek Anda. Jadi, jika Anda ingin mook objek yang menangani AI untuk musuh dalam game Anda, Anda akan menulis kelas 'Mook', dan kemudian melampirkan file itu ke setiap entitas musuh. Saat Anda menjalankan permainan 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 naskah baru , masukkan nama yang Anda inginkan, dan klik buat dan tambahkan .

Sekarang Anda memiliki skrip baru yang dapat Anda edit dengan mengklik dua kali di atasnya!

File kelas terlihat seperti ini:

using UnityEngine;
public class Mook : MonoBehaviour {
private float health;
void Start () {
health = 100;
}
void Update(){
if (health > 0) {
/* Search for player
if you encounter the player on the road, kill him
if you get shot, remove a random amount of health */
}
}
}

Mari kita uraikan ini:

  • Menggunakan UnityEngine: Baris ini memberitahu C# bahwa kita ingin menggunakan perpustakaan Unity, yang memungkinkan kita untuk terhubung ke mesin permainan Unity.
  • Mook kelas publik : MonoBehaviour: Baris ini mendeklarasikan kelas dan namanya -- mook .
  • Kesehatan pelampung pribadi: Ini mendeklarasikan variabel kelas pribadi (yang hanya dapat diubah dari dalam kelas). Variabel diberi nilai dalam Awal .
  • Batal Mulai(): Ini mendeklarasikan metode yang disebut Awal . Start adalah metode khusus yang hanya berjalan sekali, saat game pertama kali diluncurkan.
  • Pembaruan Batal(): Pembaruan adalah metode khusus lainnya, yang berjalan di setiap frame. Sebagian besar logika permainan Anda akan masuk ke sini.
  • // jika Anda bertemu pemain di jalan, bunuh dia: Baris ini adalah komentar (baris apa pun yang dimulai dengan garis miring ganda diabaikan oleh C#). Komentar digunakan untuk mengingatkan diri Anda tentang apa yang dilakukan oleh 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 Awal dan Memperbarui , Anda dapat membuat instance metode Anda sendiri dengan hampir semua nama. Namun, metode yang Anda buat tidak akan berjalan kecuali jika dipanggil. Mari kita mendeklarasikan metode untuk kelas hipotetis yang disebut tambahkanDuaNumber yang menambahkan dua angka bersama-sama:

public float addTwoNumbers(float a, float b) {
return a+b;
}

Ini mendeklarasikan metode publik (dapat diakses ke objek lain) yang mengembalikan float, yang disebut tambahkanDuaNumber , yang mengambil dua float sebagai input (disebut ke 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:

addTwoNumbers instance;
float result = instance.addTwoNumbers(1, 2);

Sekali lagi, ini hanya membuat turunan dari kelas kita, mengakses metode yang sesuai dan memberinya nomor yang ingin kita tambahkan, lalu menyimpan hasilnya di hasil . Sederhana.

Jika skrip Anda dilampirkan ke objek yang memiliki properti khusus (seperti pemancar partikel) yang tidak dapat diakses di bawah set normal parameter GameObject, Anda dapat memilih untuk memperlakukannya sebagai jenis entitas game yang berbeda dengan menggunakan Dapatkan Komponen metode.

Sintaks untuk itu terlihat seperti ini:

GetComponent().Play();

Jika ada yang asing bagi Anda, kembali dan pelajari primer C#. Ini akan menghemat banyak frustrasi saat kita melanjutkan.

4. Dasar-dasar Persatuan

Di bagian ini, kita akan mempelajari mekanika dasar mesin Unity. Alur kerja di Unity berjalan seperti ini:

  1. Buat entitas untuk menjalankan peran dalam game (kosong Objek Game dapat digunakan untuk tugas logis abstrak).
  2. Tulis atau temukan file kelas, dan tambahkan ke entitas sebagai skrip (menggunakan Tambahkan Komponen tombol di inspektur melihat.
  3. Lari > tes > debug > mengulang sampai berhasil dan lanjutkan ke elemen permainan berikutnya.

Unity hadir dengan sejumlah tab tampilan dasar yang dapat ditata dengan berbagai cara sesuai selera pengguna. Lima besar itu adalah:

  1. Permainan: menampilkan instance game yang sedang berjalan yang dapat Anda gunakan untuk berinteraksi dan menguji.
  2. Pemandangan: menyediakan versi statis yang dapat diedit dari dunia permainan .
  3. Inspektur: memungkinkan Anda untuk memodifikasi entitas individu di dunia game dengan memilihnya di editor tab.
  4. 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.
  5. Hirarki: tab ini menunjukkan semua objek di dunia, memungkinkan Anda untuk menemukan objek yang jauh di tempat kejadian, dan entitas induk satu sama lain dengan mengklik dan menyeret.

Lihat diagram di bawah ini untuk lokasi semua hal ini:

4.1 Entitas Persatuan

4.1.1 Jerat

Jerat adalah jalannya geometri 3D direpresentasikan dalam Unity. Anda dapat menggunakan built-in Unity primitif objek (kubus, bola, silinder, dll), atau impor model 3D Anda sendiri dari paket pemodelan seperti blender atau Maya . Unity mendukung berbagai format 3D, termasuk .fbx , dan .3ds .

Alat dasar untuk memanipulasi jerat adalah tombol penskalaan, rotasi, dan terjemahan di sudut kiri atas antarmuka. Tombol-tombol ini menambahkan ikon kontrol ke model dalam tampilan editor, yang kemudian dapat digunakan untuk memanipulasinya di ruang angkasa. Untuk mengubah tekstur atau sifat fisika suatu objek, pilih dan gunakan inspektur tampilan untuk menganalisis bahan dan tubuh kaku 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 segi empat GameObjects (dengan tekstur transparan dan shader transparan yang tidak menyala) untuk menempatkan elemen HUD ke dalam dunia game sebagai entitas.

Dalam hirarki tampilan, elemen gameplay ini dapat diseret ke kamera utama untuk menjadikannya 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

Material adalah kombinasi tekstur dan shader , dan dapat diseret langsung ke objek game dari tab proyek. Sejumlah besar shader hadir dengan Unity Pro, dan Anda dapat menyesuaikan tekstur yang melekat padanya menggunakan tab inspektur untuk objek tempat mereka diterapkan.

Untuk mengimpor tekstur, ubah menjadi a .jpg , .png , atau .bmp , dan seret ke dalam aktiva folder di bawah direktori proyek Unity (yang muncul di Dokumen-dokumen saya secara default). Setelah beberapa detik, bilah pemuatan akan muncul di editor. Setelah selesai, Anda akan dapat menemukan gambar sebagai tekstur di bawah proyek tab.

4.1.5 Lampu

Lampu adalah Objek Game yang memproyeksikan pancaran ke dunia. Jika tidak ada lampu di pemandangan Anda, semua poligon digambar pada tingkat kecerahan yang sama, memberikan dunia tampilan yang datar dan pudar.

Lampu dapat diposisikan, diputar, dan memiliki beberapa karakteristik internal yang dapat Anda sesuaikan. NS intensitas penggeser mengontrol kecerahan cahaya, dan jangkauan mengontrol seberapa cepat memudar.

Pedoman dalam pemandangan menunjukkan jangkauan maksimum iluminasi. Mainkan dengan kedua pengaturan untuk mencapai efek yang diinginkan. Anda juga dapat menyesuaikan warna cahaya, pola ( Kue kering ditampilkan di permukaan cahaya yang ditunjuk, dan jenis suar apa yang muncul di layar saat melihat langsung ke cahaya. Cookie dapat digunakan untuk memalsukan pola cahaya yang lebih realistis, membuat bayangan palsu yang dramatis, dan mensimulasikan proyektor.

Tiga jenis cahaya utama adalah titik , titik , dan terarah .

Lampu sorot memiliki lokasi di ruang 3D dan memproyeksikan cahaya hanya dalam satu arah dalam kerucut sudut variabel. Ini bagus untuk senter, lampu sorot, dan, secara umum, memberi Anda kontrol pencahayaan yang lebih presisi. Lampu sorot dapat memberikan bayangan.

Lampu titik memiliki lokasi di ruang 3D, dan memancarkan cahaya secara merata ke segala arah. Lampu titik tidak menghasilkan bayangan.

lampu arah , akhirnya, digunakan untuk mensimulasikan sinar matahari: mereka memproyeksikan cahaya ke arah seolah-olah dari jauh tak terhingga. Lampu terarah mempengaruhi setiap objek dalam pemandangan, dan dapat menghasilkan bayangan.

4.1.6 Sistem Partikel

KE Sistem partikel adalah GameObjek yang menghasilkan dan mengontrol ratusan atau ribuan partikel secara bersamaan. Partikel adalah objek 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 memunculkan sistem partikel di bawah editor komponen > memilih sistem partikel > membuka tab inspektur . Anda dapat mengubah ukuran, kecepatan, arah, rotasi, warna, dan tekstur setiap partikel, dan mengatur sebagian besar parameter tersebut untuk berubah seiring waktu juga.

Di bawah tabrakan atribut, jika Anda mengaktifkannya dan mengatur ruang simulasi ke dunia Anda akan mendapatkan partikel yang akan bertabrakan dengan objek di dunia, yang dapat digunakan untuk sejumlah efek partikel realistis, termasuk hujan, air yang bergerak, dan bunga api.

5. Contoh: Elemen Dasar Game

Untuk tutorial ini, kita akan membuat game sederhana pong -- sesuatu yang telah kami bahas beberapa kali di DIY sebelumnya:

  • Arduino Klasik Pong
  • Arduino OLED Pong

Di bagian ini, kita akan membahas pengaturan elemen inti -- tutorial pembuatan skrip akan datang nanti.

Pertama, mari kita urai permainan Pong menjadi komponen dasarnya. Pertama, kita membutuhkan dua dayung, dan sebuah bola. Bola terbang keluar dari layar, jadi kami menginginkan mekanisme untuk mengatur ulang. Kami juga ingin teks menampilkan skor saat ini, dan, demi menunjukkan kepada Anda semua elemen inti Unity, kami menginginkan efek partikel mewah saat Anda memukul bola. Seluruh permainan perlu dinyalakan secara dramatis.

Itu dipecah menjadi objek bola (bola), a pemijahan , dua alat peraga dayung dengan pemancar partikel terlampir, Entitas teks 3D , dan lampu sorot . Untuk tutorial ini, kita akan menggunakan materi fisika default melambung , dengan gabungan bouncing mulai berkembang biak . Begini tampilan pengaturannya, dalam sepuluh tangkapan layar:

Pertama, buat penyangga kubus untuk dayung.

Skalakan dengan tepat, duplikat itu , dan beri bola antara dayung untuk bola.

Kemudian, buat objek teks 3D dan skala dan posisi dengan benar, mengubah ukuran huruf atribut untuk mendapatkan gambar yang kurang piksel.

Selanjutnya, buat dua sistem partikel , pilih karakteristik yang Anda inginkan, dan tempelkan ke dayung.

Selanjutnya, Anda pasti ingin posisi 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 jala dalam tab inspektur .

Jika Anda menekan tombol play, Anda sekarang dapat melihat elemen dasar dari game kami ditata. Mereka belum akan melakukan apa-apa, tapi kita akan melakukannya!

Sekarang setelah kita mendapatkan pengaturan itu, kita akan berbicara tentang apa yang terlibat dalam skrip elemen-elemen ini untuk membuat game.

6. Scripting di Unity

Setelah Anda memiliki skrip yang dilampirkan ke suatu objek, Anda dapat merevisinya dengan mengklik dua kali di dalam 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 di biru dan hijau , dan nilai numerik dan string muncul di bersih . Jika Anda telah menggunakan Gerhana atau IDE lainnya, MonoDevelop sangat mirip. Kamu bisa membangun skrip Anda dari dalam editor, untuk memeriksa kesalahan sintaks, seperti:

Secara umum, agar skrip Anda berinteraksi dengan Unity, Anda harus merujuk elemen yang dimiliki objek yang memegang 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 suatu objek memengaruhi properti objek yang berbeda, Anda dapat membuat yang kosong GameObjek variabel dalam skrip Anda, dan gunakan inspektur untuk menetapkannya ke objek lain di tempat kejadian.

Daftar elemen yang mungkin dimiliki objek adalah sebagai berikut (diambil dari tampilan inspektur salah satu dayung kami dalam contoh di atas):

  1. Mengubah
  2. Kubus (Filter Jaring)
  3. Kotak Collider
  4. Renderer Jaring

Masing-masing aspek objek ini 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: skala , nya posisi , dan orientasi . Anda dapat mengaksesnya dari dalam skrip seperti ini:

transform.position = newPositionVector3;
transform.rotation = newRotationQuaternion;
transform.localScale = newScaleVector3;

Dalam contoh di atas, variabel bernama adalah dari jenis yang ditentukan dalam nama. Ada beberapa detail penting di sini: posisi dan skala, seperti yang Anda harapkan, disimpan sebagai Vektor3s . Anda dapat mengakses x , DAN , dan DENGAN komponen masing-masing (misalnya, transform.position.y memberi Anda jarak suatu benda di atas bidang nol).

Namun, untuk menghindari kunci gimbal , rotasi ditangani sebagai Quaternions (vektor empat komponen). Karena quaternions yang dimanipulasi dengan tangan tidak intuitif, Anda dapat memanipulasi rotasi menggunakan sudut Euler dengan menggunakan Quaternion.Euler metode seperti:

transform.rotation = Quaternion.Euler(pitch, yaw, roll);

Jika Anda ingin memindahkan objek dengan lancar dari satu tempat ke tempat lain, Anda akan menemukan tidur metode untuk quaternions dan vector3s membantu. Slerp mengambil tiga argumen - keadaan saat ini, keadaan akhir, dan kecepatan perubahan, dan dengan lancar menginterpolasi di antara mereka pada kecepatan yang diberikan. Sintaksnya terlihat seperti ini:

transform.position = Vector3.Slerp(startPositionVector3, newDestinationVector3, 1);

6.2 Perender

Fungsi renderer di Unity memungkinkan Anda mengontrol cara permukaan props ditampilkan di layar. Anda dapat menetapkan kembali tekstur, mengubah warna, dan mengubah shader dan visibilitas objek. Sintaksnya terlihat seperti ini:

renderer.enabled = false;
renderer.material.color = new Color(0, 255, 0);
renderer.material.mainTexture = myTexture;
renderer.material.shader = newShader;

Sebagian besar memiliki fungsi yang cukup jelas. Contoh pertama membuat objek tersebut tidak terlihat: trik yang berguna dalam sejumlah situasi. Contoh kedua memberikan yang baru warna RGB (yaitu, hijau) ke objek yang bersangkutan. Yang ketiga memberikan tekstur difus utama ke variabel Tekstur baru. Contoh terakhir mengubah shader material objek menjadi variabel shader yang baru ditentukan.

6.3 Fisika

Unity hadir dengan mesin fisika terintegrasi -- sesuatu yang digunakan semua game kotak pasir fisika. Ini memungkinkan Anda untuk menetapkan properti fisik objek dan membiarkan detail simulasinya ditangani untuk Anda. Secara umum, daripada mencoba menerapkan fisika Anda sendiri menggunakan buku teks dan sistem transformasi, lebih sederhana dan lebih kuat untuk menggunakan mesin fisika Unity semaksimal mungkin.

Semua alat peraga fisika membutuhkan bertabrakan . Namun, simulasi sebenarnya itu sendiri ditangani oleh tubuh kaku , yang dapat ditambahkan dalam inspektur melihat. Tubuh kaku bisa menjadi kinematis atau nonkinematik .

Alat peraga fisika kinematik bertabrakan dengan (dan efek) alat peraga fisika nonkinematik di sekitarnya, tetapi tidak terpengaruh oleh tumbukan itu sendiri. Alat peraga kinematik statis adalah benda tak bergerak pepatah, dan benda bergerak kinematik adalah kekuatan tak terbendung pepatah (sebagai catatan, ketika mereka bertabrakan, mereka hanya melewati satu sama lain).

Di luar itu, Anda dapat menyesuaikan gaya hambat sudut objek (berapa banyak energi yang diperlukan untuk memutarnya), mengubah massanya, menentukan apakah benda itu dipengaruhi oleh gravitasi atau tidak, dan menerapkan gaya padanya.

Contoh:

rigidbody.angularDrag = 0.1f;
rigidbody.mass = 100;
rigidbody.isKinematic = false;
rigidbody.useGravity = true;
rigidbody.AddForce(transform.forward * 100);

Ini semua cukup jelas. Satu-satunya hal yang perlu diperhatikan di sini adalah penggunaan transformasi.maju . Vector3 semuanya memiliki tiga komponen ( .maju , .ke atas , dan .Baik ) yang terkait dengannya, yang dapat diakses dan diputar dengannya ( maju adalah arah panah biru di editor). NS transformasi.maju kata kunci hanyalah vektor maju untuk objek saat ini dengan besaran 1. Ini dapat dikalikan dengan pelampung untuk menciptakan lebih banyak gaya pada objek. Anda juga dapat referensi transform.up dan transform.right , dan meniadakannya untuk mendapatkan kebalikannya.

6.4 Tabrakan

Seringkali, saat membuat game, Anda ingin tabrakan menghasilkan beberapa perubahan status dalam kode Anda, lebih dari sekadar simulasi fisika. Untuk ini, Anda memerlukan metode deteksi tabrakan .

Ada sejumlah pekerjaan persiapan yang diperlukan untuk mendeteksi tabrakan di Unity. Pertama, setidaknya salah satu objek dalam tumbukan membutuhkan a benda tegar non-kinematik melekat padanya. Kedua objek harus memiliki Collider yang benar, disetel menjadi non-pemicu. Kecepatan total kedua benda harus cukup rendah sehingga mereka benar-benar bertabrakan, bukan hanya melompati satu sama lain.

Jika Anda memiliki semua itu, Anda dapat memeriksa tabrakan dengan menempatkan metode deteksi tabrakan khusus dalam skrip yang dilampirkan ke objek yang ingin Anda periksa tabrakannya. Metodenya akan terlihat seperti ini:

void OnCollisionEnter(Collision other) {
//do things here
}

Metode ini secara otomatis akan berjalan selama frame pertama bahwa objek lain menyentuh objek Anda. Entitas tabrakan lainnya adalah referensi ke objek yang Anda tekan. Anda dapat, misalnya, merujuknya objek permainan , tubuh kaku , dan mengubah karakteristik untuk memanipulasinya dengan berbagai cara. Ketika OnCollisionEnter mungkin adalah fungsi paling umum yang akan Anda gunakan, Anda juga dapat menggunakan PadaTabrakanKeluar dan OnCollisionStay (dengan sintaks dan penggunaan yang identik), yang aktif selama frame pertama saat Anda berhenti bertabrakan dengan objek dan selama setiap frame saat Anda bertabrakan dengan objek, masing-masing.

Terkadang, itu juga berguna untuk melakukan apa yang disebut pancaran sinar . Dalam raycasting, garis tipis tak terhingga (a sinar ) dilemparkan melalui dunia dari beberapa asal, sepanjang beberapa vektor, dan, ketika menabrak sesuatu, posisi dan detail lain dari tumbukan pertama dikembalikan. Kode untuk raycast terlihat seperti ini:

RaycastHit hit;
if (Physics.Raycast(transform.position, -Vector3.up, out hit)) {
float distanceToGround = hit.distance;
}

Ini memancarkan sinar dari posisi objek saat ini sepanjang -Vector3.up (lurus ke bawah), dan menghubungkan variabel memukul ke objek pertama yang bertabrakan dengannya. Setelah sinar Anda mengenai sesuatu, Anda dapat mengakses hit.distance untuk menentukan seberapa jauh jaraknya, atau hit.GameObject untuk memanipulasi objek yang Anda pukul.

Raycast seperti ini dapat digunakan untuk penembak untuk menentukan apa yang diarahkan pistol, atau untuk memilih objek saat kamera melihatnya, atau untuk gaya mekanik gerakan tertentu.

6.5 Koreksi Waktu

Salah satu faktor penting yang perlu diingat ketika Anda memanipulasi objek dengan cara ini berkaitan dengan kecepatan bingkai . Tidak peduli seberapa hati-hati Anda mengoptimalkan, framerate akan selalu bervariasi, dan Anda tidak ingin kecepatan game 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 memperbaikinya adalah dengan mengalikan nilai yang Anda gunakan dengan waktu yang diperlukan untuk membuat bingkai terakhir. Ini dilakukan dengan menggunakan Waktu.deltaWaktu . Ini secara efektif mengubah kecepatan variabel apa pun yang Anda tambahkan setiap frame dari ubah per bingkai ke berubah per detik , dan Anda mungkin harus membuat perubahan ini ke nilai apa pun yang Anda tambah atau kurangi setiap frame.

6.6 Sumber dan Pendengar Audio

Sekarang setelah kita membahas cara membuat, merender, dan mengontrol objek, mari kita bicara tentang pengertian lain yang dapat disajikan oleh game komputer: yaitu, suara . Unity mendukung dua jenis suara: 2D dan 3D terdengar. Suara 3D memvariasikan volumenya berdasarkan jarak, dan terdistorsi saat bergerak relatif terhadap kamera; 2D suara tidak.

Suara 2D sesuai untuk sulih suara dan musik latar, dan suara 3D berlaku untuk suara yang dihasilkan oleh peristiwa di dunia. Untuk mengubah apakah suara 3D atau tidak, pilih di proyek lihat, alihkan ke inspektur lihat dan pilih opsi yang sesuai dari menu tarik-turun, lalu tekan tombol impor ulang tombol.

Untuk benar-benar memainkan suara, Anda harus melampirkan sumber suara ke prop (prop yang Anda inginkan dari suara, dalam kasus suara 3D). Maka Anda harus membuka klip audio lapangan dan pilih file suara Anda.

cara menghapus file pembaruan windows 10

Anda dapat gunakan myAudioSource.Pause () dan myAudioSource.Play () 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 apa pun dari pengguna bukanlah gim yang bagus. Ada banyak jenis masukan yang berbeda yang dapat Anda baca, dan hampir semuanya dapat diakses melalui Memasukkan dan Kata kunci objek. Beberapa contoh pernyataan input (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.Space);

Fungsi garis-garis ini sebagian besar cukup jelas. Dengan menggunakan tiga jenis referensi input ini, Anda dapat merekonstruksi skema kontrol sebagian besar game komputer 3D modern.

6.8 Men-debug Skrip

Katakanlah skrip tidak berfungsi. Seperti yang dikatakan dokter yang baik, bangup dan hangup bisa terjadi pada Anda. Jika ada kesalahan sintaks langsung dengan C# Anda, permainan umumnya akan menolak untuk berjalan ketika 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 pikirkan. Jika Anda memiliki salah satu dari kesalahan ini, dan Anda kesulitan melacaknya, ada beberapa hal yang dapat Anda coba untuk memperbaiki situasi.

Yang pertama adalah menjeda eksekusi game, dan memeriksa konsol. Anda dapat menjeda permainan dengan mengklik berhenti sebentar ikon di bagian tengah atas editor, lalu pilih menghibur dari bawah jendela menu (atau menekan Ctrl > Menggeser > C ). Bahkan jika tidak ada kesalahan, peringatan masih dapat membantu memberikan beberapa petunjuk tentang apa yang mungkin salah.

Jika ini tidak berhasil, Anda juga dapat mencoba untuk mendapatkan beberapa ide tentang status skrip Anda dengan mencetak status variabel internal untuk memvalidasi bahwa program melakukan apa yang Anda pikirkan. Anda dapat gunakan Debug.Log(String) untuk mencetak konten string ke konsol saat eksekusi program mencapai baris itu. Secara umum, jika Anda bekerja mundur dari apa yang menurut Anda seharusnya terjadi melalui hal-hal yang seharusnya membuatnya terjadi, pada akhirnya Anda akan mencapai titik di mana cetakan debug Anda tidak melakukan apa yang Anda harapkan dari mereka. 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 dengan kecepatan yang meningkat, kita membutuhkan papan skor yang mengetahui kapan bola telah melewati dayung, dan kita membutuhkan mekanisme untuk memulai kembali bola ketika itu terjadi. Langkah pertama yang baik adalah menambahkan benda tegar non-kinematik ke bola, dua benda tegar kinematik ke dayung, menonaktifkan gravitasi untuk semuanya, dan menetapkan material fisik yang sesuai dari aset standar ( melambung dengan gabungan bouncing mulai berkembang biak ).

Di bawah ini, Anda dapat melihat skrip untuk bola dengan komentar penjelasan. Bola perlu mencapai beberapa tujuan dasar: bola harus memantul dalam pola yang rumit, selalu mempertahankan gerakan pada kedua sumbu, dan harus berakselerasi dengan kecepatan yang menantang tetapi bukan tidak mungkin dalam arah horizontal.

BallHandler.cs

Selanjutnya, kita perlu membuat skrip dayung kita, 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). Itu juga perlu memicu sistem partikel ketika bertabrakan dengan sesuatu.

PaddleHandler.cs

Selanjutnya, kita membutuhkan AI musuh: sesuatu yang akan menyebabkan dayung musuh mengikuti arah bola dengan kecepatan tetap. Untuk itu, kita akan menggunakan Vector3.Slerp untuk kesederhanaan maksimum. Kami juga ingin perilaku partikel yang sama seperti yang kami lihat pada dayung kami sendiri.

MusuhAI.cs

Terakhir, kita membutuhkan skrip untuk memperbarui papan skor dan mengatur ulang bola saat keluar batas.

ScoreboardUpdater.cs

Dengan skrip terlampir dan referensi yang diisi, ketika kami menjalankan game Pong kami, kami mengalami gameplay!

Kamu bisa unduh demo Pong saya , jika Anda ingin melihat semua tindakan yang telah saya uraikan. Ini berjalan pada sistem Windows, Mac dan Linux.

8. Menjelajahi Dokumentasi / Belajar Lebih Lanjut

Unity adalah mesin yang kompleks dengan lebih banyak fitur daripada yang mungkin dapat dicakup dalam panduan gaya ini, dan itu sebelum Anda menyertakan banyak ekstensi Unity (gratis dan komersial) yang tersedia di internet. Panduan ini akan memberi Anda tempat awal yang kuat untuk mengembangkan permainan, tetapi pendidikan mandiri adalah keterampilan penting dalam upaya apa pun, dan di sini juga ganda.

Sumber daya penting di sini adalah Referensi Naskah Unity . ScriptReference adalah database yang dapat dicari, tersedia untuk C# dan Javascript, yang memiliki daftar setiap perintah dan fitur Unity, dengan deskripsi fungsinya dan contoh sintaks singkat.

Jika Anda mengalami masalah dengan editor dan antarmuka Unity, atau hanya menyukai tutorial video sebagai pilihan, ada daftar panjang kualitas tinggi Video tutorial kesatuan tersedia. Lebih luas (tetapi kurang luas) tutorial teks untuk Unity juga tersedia dari CatLikeCoding.

Terakhir, jika Anda memiliki pertanyaan di luar cakupan dokumentasi atau tutorial, Anda dapat mengajukan pertanyaan spesifik di jawaban.Unity3d.com . Ingatlah bahwa jawaban disediakan oleh sukarelawan, jadi hormati waktu mereka dan cari database terlebih dahulu untuk memastikan pertanyaan Anda belum dijawab.

9. Membangun Game Anda / Kompilasi ke Aplikasi Standalone

Ketika Anda telah membangun sesuatu yang Anda banggakan (atau Anda telah selesai mengkloning contoh Pong kami yang sedikit cerdik untuk latihan), saatnya untuk memindahkan game Anda dari editor dan mengubahnya menjadi sesuatu yang dapat Anda posting di internet dan memaksa teman dan keluarga Anda untuk bermain. Untuk melakukan itu, Anda harus membuat aplikasi mandiri. Kabar baiknya adalah bahwa di Unity, ini sangat, sangat mudah. Namun, ada beberapa potensi cegukan yang harus Anda waspadai.

Sebagai permulaan, ketahuilah bahwa Anda hanya dapat membuat proyek bebas kesalahan. Untuk itu, pastikan Anda membuka konsol saat Anda membangun: ada beberapa kondisi kesalahan yang akan diabaikan game di editor, tetapi masih akan membatalkan percobaan pembangunan. Ini hanya membuang pesan kesalahan ke konsol, tanpa hasil yang terlihat di layar, yang bisa membuat frustasi jika Anda lupa memeriksanya. Namun, setelah kompilasi game Anda bebas dari kesalahan, Anda dapat memilih Bangun Pengaturan di bawah Mengajukan menu, atau tekan Ctrl > Menggeser

> B . Ini akan memunculkan dialog sederhana yang memungkinkan Anda membangun game untuk beberapa platform.

Proses dari sana cukup jelas: pilih opsi Anda, dan tekan membangun ; permainan akan meminta Anda untuk sebuah direktori untuk menginstal, dan akan menempatkan direktori executable dan data di sana. Kedua file ini dapat di-zip bersama dan didistribusikan (pastikan Anda tidak mengenakan biaya untuk game yang dibuat dalam demo Unity, karena ini melanggar persyaratan layanan).

10. Catatan Penutup

Seperti halnya alat pengembangan game, kunci sukses dengan Unity adalah pengembangan berulang. Anda harus membangun bertahap yang dapat diatur -- jadilah ambisius, tentu saja, tetapi berambisilah dalam bagian-bagian kecil, dan aturlah bagian-bagian itu sedemikian rupa sehingga, bahkan jika Anda gagal mencapai ambisi utama Anda, setidaknya Anda akan mendapatkan hasil yang koheren. produk.

Dapatkan elemen paling penting terlebih dahulu: pikirkan ide Anda produk yang layak minimum , hal paling sederhana dan paling sederhana yang dapat Anda ciptakan dan masih merasa seolah-olah Anda telah mencapai sesuatu yang berharga. Dapatkan proyek minimum yang layak sebelum beralih ke ambisi yang lebih besar.

Tutorial ini memberi Anda tempat awal yang kuat, tetapi cara terbaik untuk mempelajari Unity adalah dengan membuat game. Mulailah membangun permainan, isi celah dalam pengetahuan Anda saat itu muncul, dan aliran pengetahuan secara bertahap akan mengikis hal-hal yang tidak Anda ketahui dengan cepat.

Jika Anda telah membaca semua ini dan sedikit kewalahan dengan pengkodean yang diperlukan dengan Unity, pastikan Anda memeriksa caranya pelajari pengembangan game dengan Unity Learn dan juga baca panduan kami tentang cara membuat video game tanpa pemrograman apa pun.

Unity adalah alat yang ampuh, dan dengan sedikit eksplorasi, Anda dapat membangun proyek yang mengesankan dengannya lebih cepat dari yang Anda harapkan. Beri tahu kami apa yang Anda buat di komentar di bawah -- kami ingin melihatnya!

Membagikan Membagikan Menciak Surel 3 Cara Mengecek Email Asli atau Palsu

Jika Anda menerima email yang terlihat agak meragukan, sebaiknya periksa keasliannya. Berikut adalah tiga cara untuk mengetahui apakah email itu asli.

Baca Selanjutnya
Topik-topik yang berkaitan
  • Pemrograman
  • Pemrograman
  • Bentuk panjang
  • Panduan Bentuk Panjang
Tentang Penulis Andre Infante(131 Artikel Diterbitkan)

Seorang penulis dan jurnalis yang berbasis di Southwest, Andre dijamin tetap berfungsi hingga 50 derajat Celcius, dan tahan air hingga kedalaman dua belas kaki.

More From Andre Infante

Berlangganan newsletter kami

Bergabunglah dengan buletin kami untuk kiat teknologi, ulasan, ebook gratis, dan penawaran eksklusif!

Klik di sini untuk berlangganan