Buku "Persatuan untuk pengembang. Game multi-platform seluler »

gambar Buku ini ditujukan untuk semua orang yang ingin membuat game, tetapi tidak memiliki pengalaman pengembangan sebelumnya. Unity mendukung beberapa bahasa pemrograman. Di buku ini, kita akan menggunakan C #. Sebelum Anda mulai membuat game, Anda perlu memahami dasar-dasar desain mereka, serta mesin game Unity itu sendiri, jadi di bagian pertama buku ini kami akan mempelajari masalah ini. Di bagian kedua dan ketiga, kami akan mempertimbangkan proses pembuatan game dua dimensi dan tiga dimensi, dan di bagian keempat kami akan berbicara tentang fitur Unity lainnya, pengetahuan yang akan berguna bagi Anda.

6. Implementasi gameplay dengan jebakan dan tujuan


Perangkap sederhana

Sebagian besar permainan ini terdiri dari menangani sentuhan berbagai objek - perangkap, harta, titik keluar, dll. Mempertimbangkan betapa pentingnya menentukan kapan harus menyentuh objek tertentu, kami akan membuat skrip umum yang menghasilkan Acara Persatuan ketika objek apa pun dengan tag "Player" menyentuhnya. Acara ini kemudian akan dikonfigurasikan secara berbeda untuk objek yang berbeda: jebakan akan memberi tahu Game Manager bahwa gnome telah menerima kerusakan, harta akan melaporkan bahwa gnome telah mengambil harta itu, dan titik keluarnya adalah bahwa gnome telah mencapai pintu keluar.

Sekarang buat skrip C # baru dalam file bernama SignalOnTouch.cs dan tambahkan kode berikut ke dalamnya:

using UnityEngine.Events;  //  UnityEvent,     "Player"  //  . [RequireComponent (typeof(Collider2D))] public class SignalOnTouch : MonoBehaviour {  // UnityEvent      .  //     . public UnityEvent onTouch;   //    true,      AudioSource. public bool playAudioOnTouch = true;  //       ,  //  SendSignal. void OnTriggerEnter2D(Collider2D collider) {  SendSignal (collider.gameObject); }   //      , //  SendSignal. void OnCollisionEnter2D(Collision2D collision) {   SendSignal (collision.gameObject);  }    //    "Player"      //  UnityEvent,    .  void SendSignal(GameObject objectThatHit) {   //    "Player"? if (objectThatHit.CompareTag("Player")) {     //    ,     if (playAudioOnTouch) {  var audio = GetComponent<AudioSource>();   //     //     ,  //    if (audio &&     audio.gameObject.activeInHierarchy) audio.Play();   }   //      onTouch.Invoke();     }   }  } 

Dasar dari kelas SignalOnTouch adalah metode SendSignal, yang dipanggil oleh metode OnCollisionEnter2D dan OnTriggerEnter2D. Dua metode terakhir dipanggil oleh mesin Unity ketika objek menyentuh collider atau ketika objek berada dalam lingkup pemicu. Metode SendSignal memeriksa tag objek dan, jika ia menyimpan string "Player", menghasilkan acara Unity.
Sekarang Anda memiliki kelas SignalOnTouch, Anda dapat menambahkan perangkap pertama.

1. Impor sprite objek. Impor konten folder Sprite / Objek ke proyek.

2. Tambahkan paku cokelat. Temukan sprite SpikesBrown dan seret ke dalam adegan.

3. Atur objek dengan paku. Tambahkan komponen PolygonCollider2D dan SignalOnTouch ke objek berduri.

Tambahkan fungsi baru ke acara SignalOnTouch. Seret Game Manager ke bidang objek dan pilih fungsi GameManager.TrapTouched, seperti yang ditunjukkan pada Gambar. 6.1.

gambar

4. Konversikan objek berduri ke templat. Seret objek SpikesBrown dari panel Hierarchy ke folder Level. Sebagai hasilnya, sebuah template akan dibuat dengan mana Anda dapat membuat beberapa salinan objek.

5. Uji itu. Luncurkan game. Buat gnome mengenai paku. Gnome ini harus jatuh dan muncul kembali!

Harta dan keluar


Setelah berhasil menambahkan jebakan yang membunuh gnome, saatnya menambahkan kesempatan untuk memenangkan permainan. Untuk melakukan ini, tambahkan dua elemen baru: harta dan titik keluar.

Harta adalah sprite di bagian bawah sumur yang mendeteksi sentuhan gnome dan mengirimkan sinyal ke Game Manager. Ketika ini terjadi, manajer permainan memberi tahu gnome bahwa ia meraih harta, setelah itu sprite dengan gambar tangan kosong gnome digantikan oleh sprite dengan gambar tangan memegang harta.

Titik keluar adalah sprite lain yang terletak di bagian atas sumur. Seperti harta karun, ia mendeteksi sentuhan gnome dan memberi tahu manajer game tentang hal ini. Jika pada saat ini gnome memegang harta, pemain dianugerahi kemenangan dalam permainan.

Pekerjaan utama dalam dua objek ini dilakukan oleh komponen SignalOnTouch - ketika gnome mencapai titik keluar, metode ExitReached dari manajer game harus dipanggil, dan ketika gnome menyentuh harta, metode TreasureCollected harus dipanggil.

Mari kita mulai dengan membuat titik keluar, lalu tambahkan harta.

Buat titik keluar


Pertama-tama, kami mengimpor sprite.

1. Sprite Latar Belakang Tingkat Impor. Salin folder Sprite / Latar Belakang dari paket yang diunduh dengan sumber daya ke folder Sprite proyek.

2. Tambahkan sprite Top. Tempatkan tepat di bawah objek Rope. Sprite ini akan berfungsi sebagai titik keluar.

3. Siapkan sprite. Tambahkan komponen Box Collider 2D ke sprite dan centang kotak Is Trigger. Klik pada tombol Edit Collider dan ubah ukuran collider sehingga pendek dan lebar, seperti yang ditunjukkan pada Gambar. 6.2.

gambar

4. Konfigurasikan pengiriman sinyal ke pengelola gim pada saat menyentuh sprite. Tambahkan komponen SignalOnTouch ke sprite. Tambahkan item ke daftar acara komponen dan sambungkan ke Game Manager. Pilih fungsi GameManager.ExitReached. Sekarang menyentuh pintu keluar gnome akan memanggil metode ExitReached dari Game Manager.
Sekarang tambahkan harta itu.

Harta bekerja seperti ini: secara default, objek Harta menampilkan sprite dengan gambar harta. Ketika gnome menyentuhnya, metode TreasureCollected dari Game Manager dipanggil dan sprite lain ditampilkan di tempat harta itu, menunjukkan bahwa harta itu telah diambil. Ketika gnome mati, objek Harta kembali ke keadaan semula dan menampilkan sprite dengan gambar harta lagi.

Karena perubahan sprite dalam permainan akan dilakukan cukup sering - Anda akan melihat ini ketika kami akan meningkatkan grafik - masuk akal untuk membuat kelas universal untuk mengubah sprite dan menggunakannya dalam objek harta.

Buat skrip C # baru yang disebut SpriteSwapper.cs. Tambahkan kode berikut ke dalamnya:

 //     . ,    //   ' '   ' '. public class SpriteSwapper : MonoBehaviour { // ,   . public Sprite spriteToUse; //  ,    //    . public SpriteRenderer spriteRenderer; //  .    ResetSprite. private Sprite originalSprite; //  . public void SwapSprite() { //      ... if (spriteToUse != spriteRenderer.sprite) { //    originalSprite originalSprite = spriteRenderer.sprite;  //    . spriteRenderer.sprite = spriteToUse; } } //   . public void ResetSprite() { //     ... if (originalSprite != null) {  // ...  . spriteRenderer.sprite = originalSprite; }  } } 

Kelas SpriteSwapper dirancang untuk dua operasi: ketika metode SwapSprite dipanggil, Sprite lain diteruskan ke visualizer SpriteRenderer yang terhubung ke objek game untuk ditampilkan. Dalam hal ini, sprite asli disimpan dalam variabel. Ketika metode ResetSprite dipanggil, visualizer dikirim sprite asli untuk ditampilkan.
Sekarang Anda dapat membuat dan menyesuaikan objek Treasure.

1. Tambahkan sprite dengan gambar harta karun. Temukan sprite TreasurePresent dan tambahkan ke tempat kejadian. Tempatkan dekat dengan bagian bawah, tetapi sedemikian rupa sehingga gnome bisa mendapatkannya.

2. Tambahkan collider untuk harta. Pilih sprite dengan gambar harta karun dan tambahkan komponen Box Collider 2D ke dalamnya. Centang kotak Is Trigger.

3. Tambahkan dan konfigurasikan skrip untuk mengubah sprite. Tambahkan komponen SpriteSwapper. Seret sprite dengan gambar harta ke dalam bidang Sprite Renderer dari komponen ini. Kemudian cari sprite TreasureAbsent dan seret ke bidang Sprite To Use dari sprite changer.

4. Tambahkan dan konfigurasikan komponen pengirim sinyal sebagai respons terhadap ketukan. Tambahkan komponen SignalOnTouch. Tambahkan dua item ke daftar On Touch:

  • tautan pertama ke objek Game Manager dan pilih metode GameManager.TreasureCollected;
  • kaitkan yang kedua dengan sprite harta karun (yaitu, dengan objek yang sedang Anda siapkan) dan pilih metode SpriteSwapper.SwapSprite.

5. Tambahkan dan konfigurasikan komponen yang Dapat Diatur Ulang. Tambahkan komponen yang dapat diatur ulang ke objek. Tambahkan satu item ke daftar On Touch, pilih metode SpriteSwapper.ResetSprite, dan kaitkan dengan objek Treasure.

Akibatnya, pengaturan di panel inspektur akan terlihat seperti yang ditunjukkan pada Gambar. 6.3.

6. Uji permainan. Luncurkan game dan sentuh harta karun. Pada saat itu, harta karun itu akan hilang; jika setelah itu gnome mati, harta itu akan muncul kembali di tempatnya setelah penciptaan gnome baru.

Menambahkan Background


Saat ini, permainan berlangsung dengan latar belakang biru kusam yang diatur secara default di Unity. Di bagian ini, kita akan menambahkan latar belakang sementara, yang akan kita ganti dengan sprite latar belakang ketika kita mulai meningkatkan desain grafis permainan.

1. Tambahkan persegi panjang latar belakang. Buka menu GameObject dan pilih 3D ObjectQuad (3D ObjectRectangle). Beri nama objek baru Background.

2. Pindahkan latar belakang ke latar belakang. Untuk menghindari situasi saat latar belakang persegi panjang akan digambar di atas sprite game, pindahkan ke latar belakang, jauh dari kamera. Untuk melakukan ini, atur koordinat Z persegi panjang menjadi 10.

gambar

3. Atur lebar dan tinggi persegi panjang latar belakang. Aktifkan alat Rect dengan menekan tombol T, dan kemudian gunakan pegangan untuk mengatur dimensi persegi panjang. Batas atas latar belakang harus berada pada level yang sama dengan sprite di bagian atas adegan, dan bagian bawah dengan harta (Gbr. 6.4).

gambar

4. Uji coba game. Setelah memulai, latar belakang lapangan bermain harus berubah menjadi abu-abu gelap.

»Informasi lebih lanjut tentang buku ini dapat ditemukan di situs web penerbit
» Isi
» Kutipan

Kupon diskon 20% untuk penjaja - Unity

Source: https://habr.com/ru/post/id413531/


All Articles