Unlimited Plugins, WordPress themes, videos & courses! Unlimited asset downloads! From $16.50/m
Advertisement
  1. Code
  2. Games
Code

Buat RPG Top-Down di Flixel: Ruangan Pertama Anda

by
Difficulty:BeginnerLength:LongLanguages:

Indonesian (Bahasa Indonesia) translation by Suci Rohini (you can also view the original English article)

Dalam tutorial ini kita akan beralih dari bertanya "Apa itu Flixel?" untuk memiliki ruangan dalam ruangan dan karakter yang dikontrol keyboard dalam gaya permainan peran top-down (pikirkan Zelda).


Pratinjau Hasil Akhir

Mari kita lihat hasil akhir yang akan kita upayakan:


Langkah 1: Memahami Struktur Proyek

Untuk orang-orang visual di antara kita, mari kita lihat bagaimana semuanya akan diatur sehingga sisanya akan masuk akal.

list of all the source files and folders used in the project

Pada dasarnya, kita memiliki semua karya seni disimpan di folder assets dan semua file ActionScript kita disimpan di folder src. Jika Anda ingin menggunakan tutorial ini sebagai dasar untuk mesin gim Anda sendiri, folder topdown berisi hal-hal umum (a.k.a engine) dan folder tutorial menunjukkan cara menggunakannya.

Anda mungkin akan melihat dengan cepat bahwa file seni memiliki nama yang sangat panjang. Daripada menunjukkan kepada Anda tutorial yang diisi dengan kotak merah yang menarik (puncak kemampuan artistik saya), kita akan menggunakan beberapa karya seni open source dari OpenGameArt. Setiap file diberi nama untuk menunjukkan sumber, artis, dan lisensi. Jadi, misalnya, armor (opengameart - Redshrike - ccby30).png berarti itu adalah gambar armor, diunduh dari OpenGameArt, dibuat oleh artis yang dikenal sebagai Redshrike, dan menggunakan lisensi CC-BY-30 (Creative Commons Attribution).

Singkat cerita - file seni ini dapat digunakan untuk tujuan apa pun selama kita menautkan kembali ke situs dan memberikan penghargaan kepada artis.

Berikut adalah deskripsi setiap file sumber dalam proyek:

  • topdown/TopDownEntity.as - kelas dasar untuk setiap sprite bergerak di RPG top-down kita
  • topdown/TopDownLevel.as - kelas dasar untuk level RPG top-down
  • tutorial/Assets.as - mengimpor gambar apa saja yang perlu kita gunakan dalam tutorial ini
  • tutorial/IndoorHouseLevel.as - mendefinisikan ruang dalam ruangan dengan beberapa benda yang tergeletak di sekitarnya
  • tutorial/Player.as - Ranger animasi yang dikontrol keyboard
  • tutorial/PlayState.as - Status Flixel yang mengontrol permainan kita
  • Default.css - file kosong yang diperlukan untuk mencegah kompiler Flex memberikan peringatan
  • Main.as - titik masuk untuk aplikasi
  • Preloader.as - Preloader Flixel

Sekarang mari kita mulai bisnis!


Langkah 2: Firing Up Flixel

Flixel adalah mesin game 2D untuk ActionScript 3. Mengutip beranda:

Flixel adalah perpustakaan pembuat game open source yang sepenuhnya gratis untuk penggunaan pribadi atau komersial.

Hal terpenting yang perlu diketahui tentang Flixel adalah bahwa ia dirancang untuk menggunakan gambar bitmap (grafik raster) alih-alih grafis vektor gaya Flash. Anda dapat menggunakan klip video Flash, tetapi butuh sedikit pijatan. Karena saya tidak merasa ingin memijat hari ini, kita akan menggunakan gambar untuk semua karya seni.

Flixel hadir dengan tool yang menciptakan proyek boneka untuk Anda. Tool ini membuat tiga file yang ada di root dari proyek: Default.css, Main.as, dan Preloader.as. Ketiga file ini menjadi dasar untuk hampir semua proyek di Flixel. Karena Default.css ada di sana untuk menghindari peringatan kompiler, mari kita lihat Main.as.

Hanya ada tiga baris yang penting di sini. Pertama, kita memberi tahu Flash untuk menggunakan jendela 480x480 dengan background putih. Kemudian kita memberi tahu Flash untuk menggunakan kelas Preloader kita saat memuat. Akhirnya, kita memberi tahu Flixel untuk menggunakan jendela 240x240 (memperbesar dengan faktor 2 untuk membuat segalanya terlihat lebih besar) dan menggunakan PlayState setelah semuanya siap.

Biarkan saya berbagi sepatah kata cepat tentang keadaan Flixel. Di Flixel, keadaan seperti jendela, tetapi Anda hanya dapat memilikinya satu per satu. Jadi, misalnya, Anda bisa memiliki status untuk menu utama game Anda (MainMenu), dan ketika pengguna mengklik tombol Start Game Anda beralih ke PlayState. Karena kita ingin game segera dijalankan, kita hanya perlu satu status (PlayState).

Selanjutnya adalah Preloader.as.

Tidak banyak yang bisa dilihat di sini. Karena kita memperluas dari FlxPreloader, Flixel benar-benar hanya mengurusnya. Satu-satunya hal yang perlu diperhatikan adalah bahwa jika Anda mengubah Main ke beberapa nama lain, Anda harus mengubah className di sini pada baris yang disorot.

Kita hampir melihat sesuatu di layar sekarang. Yang kita butuhkan adalah keadaan Flixel untuk membuat bola bergulir, jadi inilah PlayState.as.

Jika Anda mengompilasi kode ini, Anda akan mendapatkan layar hitam luar biasa dengan kursor mouse. Jangan takut, ini akan lebih baik dari sini.


Langkah 3: Membuat tingkat dasar

Sekarang setelah Flixel aktif dan berjalan, saatnya membuat level RPG top-down. Saya ingin memberi Anda kelas yang dapat digunakan kembali sehingga Anda dapat membuat level Anda sendiri, jadi kita benar-benar akan membuat kelas level umum yang bisa digunakan untuk membuat sesuatu yang lebih menarik nanti. Ini adalah topdown/TopDownLevel.as.

Semua variabel memiliki deskripsi sendiri dalam kode sumber, jadi saya tidak akan membuat Anda bosan dengan pengulangan yang terlalu banyak. Namun, saya harus menjelaskan kelompok di Flixel.

Kami memiliki tiga grup yang didefinisikan di sini: floorGroup, wallGroup, dan guiGroup. Flixel menggunakan grup untuk menentukan dalam urutan apa untuk membuat sprite (untuk memutuskan apa yang ada di atas ketika mereka tumpang tindih) dan untuk menangani tabrakan. Kita ingin pemain dapat berjalan di lantai (tidak perlu tabrakan), Namun juga ingin dinding dan benda (benturan pasti diperlukan) sehingga kita membutuhkan dua kelompok. Kita juga memerlukan grup terpisah untuk interface pengguna (guiGroup) sehingga kita dapat memastikan itu diberikan di atas segalanya.

Grup diberikan sesuai urutan yang ditambahkan, yang ditentukan dalam fungsi addGroups() kita. Karena kita ingin guiGroup selalu di atas, panggil add(guiGroup) setelah semua grup lainnya. Jika Anda membuat grup sendiri dan lupa memanggil add(), mereka tidak akan muncul di layar.

Di konstruktor, kita menyimpan beberapa nilai yang berguna (seperti jumlah petak di level) dan memanggil create(). Fungsi create() menunjukkan kepada Anda apa yang masuk ke level Flixel - peta, pemain, antarmuka, grup (untuk mengontrol urutan render dan tabrakan), dan tampilan kamera. Masing-masing memiliki fungsi sendiri untuk membantu menjaga hal-hal lebih mudah dibaca sehingga kita dapat menggunakan kembali fungsi umum. Misalnya, lihat createCamera().

Kita tidak perlu mengubah fungsi ini untuk membuat level dalam ruangan kita sendiri. Flixel memiliki kamera internal untuk permainan top-down (FlxCamera.STYLE_TOPDOWN). Yang benar-benar dilakukan di sini adalah memberi tahu kamera untuk tidak meninggalkan level (dengan memanggil setBounds()) dan memberi tahu kamera untuk mengikuti pemain (dengan memanggil follow()) jika level lebih besar dari layar dan memerlukan pengguliran. Ini akan bekerja untuk hampir semua jenis level, sehingga kita dapat menyimpannya di sini daripada mengkode ulang untuk setiap level kita.

Satu-satunya hal yang perlu diperhatikan adalah update().

FlxG.collide(wallGroup, player) menyebabkan pemain menabrak dinding daripada berjalan melewatinya. Karena kita tidak memanggil FlxG.collide(floorGroup, player), pemain dapat berjalan di seluruh lantai dengan sedikit tabrakan yang terlihat (hal yang sama juga untuk guiGroup).

Akhirnya, kita perlu membuat PlayState menggunakan level mewah kita.

Ingatlah untuk memanggil this.add(LEVEL) kecuali Anda ingin menatap layar hitam selamanya. Sebagai komentar menyatakan, saya menggunakan public static var LEVEL sebagai kenyamanan untuk masa depan. Misalkan Anda menambahkan beberapa kecerdasan buatan ke game Anda dan AI Anda perlu tahu di mana pemain berada; dengan cara ini, Anda dapat memanggil PlayState.LEVEL.player dan menjaga semuanya tetap menyenangkan dan mudah. Ini belum tentu cara tercantik untuk melakukan sesuatu, tetapi itu akan menyelesaikan pekerjaan jika digunakan dengan hemat.


Langkah 4: Membuat Entitas Dasar

Entitas adalah sesuatu yang perlu ditampilkan dan dapat bergerak. Ini bisa menjadi pemain, karakter yang dikendalikan komputer, atau mungkin bahkan sesuatu seperti panah. Karena ada banyak entitas pada level, kita ingin kelas generik yang dapat digunakan untuk menghemat waktu. Lihatlah topdown/TopDownEntity.as.

Perhatikan bahwa kita memperluas dari FlxSprite. Ini memberikan kami akses ke banyak kekuatan di belakang Flixel. makeGraphic() menciptakan bitmap persegi panjang dengan ukuran yang diberikan (16 x 18 dalam hal ini), menggunakan warna Anda lewat di. Warna ini dalam format 0xAARRGGBB, jadi 0xFFFF0000 berarti kita membuat kotak merah solid (saya memperingatkan Anda tentang kemampuan artistik saya). Anda bisa dipusingkan dengan nilai ini untuk melihat bagaimana perubahan warnanya. Bahkan, kita sekarang memiliki sesuatu selain layar kosong!

our first entity - a black screen with a red box in the middle

Masih tidak terlalu mengasyikkan, tapi setidaknya kita bisa melihat sesuatu, bukan?


Langkah 5: Membuat Ruangan Dalam Ruangan

Saya tidak tahu tentang Anda, tetapi saya lelah melihat backgound hitam itu. Mari kita membuatnya terlihat seperti ruangan. Inilah tutorial/IndoorHouseLevel.as.

Hal pertama yang Anda perhatikan adalah dua array angka raksasa, FLOORS dan WALLS. Array ini menentukan layer peta kita. Angka-angka adalah indeks ubin berdasarkan karya seni yang digunakan. Saya telah memperbesar gambar yang digunakan untuk dinding kita untuk menunjukkan kepada Anda apa yang saya bicarakan.

sprite sheet for the walls in our level

Perhatikan bahwa nol kosong (tidak menghasilkan apa-apa). Gambar lantai, di sisi lain, hanya satu ubin, diulang, saat ini. Itu berarti kita ingin menggambar setiap ubin (termasuk nol). Jadi jika Anda melihat fungsi createMap(), kode kita untuk memuat di lantai lebih panjang dari kode untuk memuat di dinding.

Kita mulai dengan FlxTilemap.arrayToCSV(FLOORS, 15), yang mengubah susunan besar kita menjadi format suka Flixel (CSV). Angka di akhir memberi tahu Flixel berapa banyak nilai di setiap baris. Selanjutnya kita beri tahu Flixel gambar mana yang harus digunakan (Assets.FLOORS_TILE - Saya akan menjelaskan tentang apa itu pada langkah selanjutnya). Setelah menentukan ukuran setiap blok dalam gambar, kita memiliki empat nilai lebih untuk lantai daripada untuk dinding. Karena kita ingin semua ubin (termasuk nol) digambar untuk lantai, kita harus memberikan nilai tambahan ini.

Satu-satunya yang sedikit aneh adalah yang terakhir: uint.MAX_VALUE. Setiap nomor ubin (nol melalui jumlah ubin di gambar) yang berada di atas angka yang diteruskan pada parameter ini akan ditandai untuk tabrakan. Segala sesuatu di bawah angka ini akan mengabaikan tabrakan secara default. Jadi, jika Anda memiliki tembok yang bisa dilalui pemain, Anda bisa meletakkannya di akhir gambar Anda (indeks tinggi) dan menggunakan nilai ini untuk membuat Flixel mengabaikan tabrakan. Karena kita tidak pernah ingin tabrakan terjadi dengan lantai, kita menggunakan uint.MAX_VALUE karena setiap indeks ubin akan berada di bawah nilai ini dan karenanya tidak akan ada tabrakan.

Akhirnya, kita harus ingat untuk menambahkan tilemaps kita ke grup atau mereka tidak akan muncul di layar. Sebelum kita dapat menjalankan proyek, kita perlu memuat karya seni kita.


Langkah 6: Loading Aset

Karena menggunakan gambar, kita perlu memberi tahu Flash tentang mereka. Salah satu cara yang lebih mudah untuk melakukan ini adalah dengan menanamkannya di SWF Anda. Inilah cara kita melakukannya dalam proyek ini (ditemukan di tutorial/Assets.as).

Saya memberikan Anda semua karya seni sekaligus, karena itu tidak terlalu rumit setelah Anda terbiasa. Mari kita lihat garis-garis yang disorot. Di sini kita memuat dalam dua gambar: satu untuk dinding kita dan satu untuk lantai kita. Jika Anda ingat pada langkah terakhir, kita memberi tahu Flixel untuk menggunakan Assets.WALLS_TILE dan Assets.FLOORS_TILE saat memuat di layer peta. Di sinilah kita mendefinisikan variabel-variabel itu.

Perhatikan bahwa kami menggunakan path relatif ke file Assets.as. Anda juga dapat menyematkan hal-hal seperti file XML, file SWF, dan banyak aset lainnya. Namun, yang kita butuhkan hanyalah gambar. Untuk informasi lebih lanjut tentang menanamkan aset dalam Flash, lihat artikel ini dari blog Nightspade.

Sekarang setelah gambar disematkan dan dapat diakses, kita dapat memberi tahu PlayState.as untuk menggunakan level model baru.

Kita mengubah garis yang disorot dari menggunakan TopDownLevel ke menggunakan IndoorHouseLevel baru. Sekarang jika Anda menjalankan proyek, Anda akan melihat sesuatu yang sedikit lebih mirip ruangan.

an indoor room with wooden floors, stone walls, and a red square player in the middle

Langkah 7: Menambahkan Objek dan Eye Candy

Itu mungkin sebuah ruangan, tapi itu ruangan yang membosankan. Mari kita merapikannya dengan furnitur. Pertama, kita membutuhkan beberapa grup lagi dan beberapa variabel di dalam IndoorHouseLevel.

decalGroup akan memungkinkan kita untuk menambahkan beberapa permadani (permen mata murni visual), sementara objectGroup akan memungkinkan kita untuk menambahkan beberapa furnitur yang akan menghalangi pemain. Variabel lain adalah potongan furnitur yang akan kita tambahkan sebentar lagi.

Selanjutnya, kita perlu menambahkan objek-objek ini ke level. Kita menambahkan garis yang disorot dan semua yang ada di bawahnya.

Saya menggunakan fungsi tambahan, createObjects(), hanya untuk membuat hal-hal lebih mudah dibaca. Komentar menjelaskan setiap objek individu, tetapi izinkan saya menawarkan beberapa pengamatan umum. Pertama, kita harus selalu ingat untuk memanggil add() untuk setiap objek atau tidak akan ditampilkan. Selain itu, kita perlu menggunakan grup yang tepat (mapGroup, floorGroup, decalGroup, objectGroup, dll.) Saat memanggil add() atau itu akan mengacaukan pesanan render dan deteksi tabrakan kita.

Juga perhatikan semua berbagai cara kita dapat memutuskan di mana menempatkan objek dan decals kita. Kita dapat mengkode nilai secara keras (seperti yang kita lakukan dengan permadani pertama), kita dapat menggunakan tileSize untuk menyelaraskannya dengan lantai dan ubin dinding (seperti yang kita lakukan dengan permadani kedua), dan kita dapat mencampur dan mencocokkan dengan isi hati kita. Ketahuilah bahwa Flixel tidak akan mendeteksinya jika kita menempatkan sesuatu di luar level atau menindih objek lain - itu mengasumsikan kita tahu apa yang kita lakukan.

Sekarang kita perlu menampilkan grup baru kita dalam urutan yang benar dan menangani tabrakan. Tambahkan fungsi-fungsi ini ke bagian bawah IndoorHouseLevel.

Karena kita ingin grup baru di-render di atas lantai dan dinding, kita perlu sepenuhnya melakukan kembali fungsi addGroups() yang dimiliki di TopDownLevel. Kita juga perlu menambahkan deteksi tabrakan untuk furnitur kita di objectGroup. Sekali lagi, karena kita tidak memanggil FlxG.collide() untuk decalGroup, pemain tidak akan terhalang oleh permadani yang mengesankan. Sekarang kamar kita terlihat sedikit kurang kosong.

an indoor room with wooden floors, stone walls, furniture, and a red square player in the middle

Langkah 8: Membuat Pemain Kita

Saya terus berbicara tentang tabrakan, tetapi sulit untuk bertabrakan dengan kotak merah tidak bergerak. Selama tiga langkah berikutnya akan menambahkan kontrol keyboard ke kotak merah kita sebelum akhirnya menjadikannya sprite animasi yang tepat. Mari kita buat tutorial/Player.as.

Ini adalah kerangka yang akan digunakan untuk menyempurnakan pemain yang lebih menarik. Sekarang kita memiliki pemutar khusus, kita perlu menggunakannya di IndoorHouseLevel. Tambahkan fungsi ini di akhir kelas.

Ini berubah dari menggunakan TopDownEntity ke menggunakan Player. Sekarang mari kita buat kotak merah ini bergerak.


Langkah 9: Menambahkan Kontrol Keyboard

Karena kita mungkin ingin entitas selain Player dapat dipindahkan, kita akan menambahkan beberapa fungsionalitas ke TopDownEntity. Ini versi baru.

Kita telah menambahkan konstanta baru, RUNSPEED, yang menentukan seberapa cepat entitas bergerak. Lalu kita atur maxVelocity dan drag (perlambatan) di konstruktor. Setelah itu, kita memanggil updateControls() setiap frame sehingga dapat memeriksa keyboard, mouse, atau AI (tergantung kebutuhan). Akhirnya, kita menambahkan beberapa fungsi pembantu untuk bergerak di setiap arah. Perhatikan bahwa kita memperbarui facing pada masing-masingnya. Ini adalah cara praktis untuk mengetahui animasi mana yang akan digunakan nanti.

Sekarang kita harus benar-benar menggunakan keyboard di dalam Player. Tambahkan fungsi ini setelah konstruktor.

Jadi setiap frame kita periksa tombol apa yang ditekan. Flixel memungkinkan kita untuk menguji kunci dengan berbagai cara. Di sini kita menggunakan pressed(), yang true selama kunci ditekan. Jika kita menggunakan justPressed(), itu hanya akan menjadi true segera setelah pemain menekan tombol, bahkan jika tombol ditekan setelah itu. Itu akan terbalik jika kami menggunakan justReleased().

Seperti yang saya nyatakan dalam komentar, saya ingin menangani kasus di mana pengguna menekan kiri dan kanan (misalnya) secara bersamaan dengan tidak bergerak. Gerakan incrementing atau decrementing movement.x berdasarkan yang ditekan panah memungkinkan kita untuk melakukan itu karena movement.x akan menjadi nol jika kedua kiri dan kanan sedang ditekan.

Jika Anda menjalankan proyek sekarang, Anda harus dapat memindahkan kotak merah di sekitar dengan tombol panah dan melihat tabrakan terjadi di antara kotak, dan dinding atau furnitur (tetapi bukan karpet).

Anda mungkin akan melihat bahwa kotak itu tidak mengarah ke dinding kiri dan kanan. Ini adalah aspek yang lebih esoterik dari Flixel. Flixel menggunakan deteksi tabrakan yang agak sederhana (tetapi memungkinkan kita untuk membuatnya lebih rumit jika kita mau). Karena gambar yang digunakan untuk semua dinding memiliki ukuran yang sama (16x16), Flixel menggunakan 16x16 sebagai ukuran tumbukan meskipun sebagian besar gambar dinding kiri dan kanan transparan. Memperbaiki perilaku itu berada di luar cakupan tutorial ini, tetapi hal itu dapat dilakukan.

an indoor room with wooden floors, stone walls, furniture, and a red square player colliding with a table in the corner

Langkah 10: Menambahkan Animasi

Saya berjanji kita tidak akan bertahan dengan kotak merah (meskipun menawan), jadi di sini kita pergi dengan sprite animasi. Karena kita mungkin menginginkan kemampuan untuk menghidupkan entitas yang akan datang, kita akan menambahkan fungsionalitas dasar ke TopDownEntity alih-alih Player. Berikut adalah fungsi konstruktor, createAnimation(), dan update() baru untuk TopDownEntity.

FlxSprite mengasumsikan bahwa, jika kita menghidupkan, kita memiliki banyak bingkai animasi yang disimpan dalam satu gambar (disebut sprite sheet). Meskipun kotak merah tidak memiliki bingkai untuk dianimasikan, karya seni yang akan digunakan tidak. Jika Anda menggunakan karya seni yang diatur secara berbeda di gim Anda sendiri, Anda perlu mengubah nomor bingkai ini. Selain itu, jika Anda melihat animasi yang menganggur, Anda akan melihat bahwa kita harus memasukkan array indeks bingkai walaupun kita hanya memiliki satu.

Inilah lembar sprite ranger yang akan digunakan untuk pemain supaya Anda bisa melihat lebih jelas.

all the animations used by the ranger, with frame numbers labeled

Perhatikan bahwa kita menyertakan beberapa bingkai kosong dalam lembar sprite. Ini terutama untuk kenyamanan dalam mengedit animasi karena animasi bawah (menyerang) memiliki satu bingkai lebih dari empat animasi teratas kita (berjalan). Perhatikan juga bahwa kita menggunakan bingkai tengah dari masing-masing animasi berjalan sebagai animasi idle kita.

Selama semua entitas kita dalam game menggunakan nomor bingkai yang sama ini, tidak perlu mengubah kode animasi. Jika karya seni kita menggunakan jumlah frame yang berbeda untuk menghidupkan dan menyerang, kita akan memperbarui frame yang dilewatkan ke addAnimation(). Karena animasi berada dalam fungsinya sendiri - createAnimations(), Anda juga dapat mengganti fungsi ini untuk membuat beberapa entitas memiliki animasi yang berbeda dari yang lain.

Kita juga membuat fungsi baru lainnya untuk menampilkan animasi yang tepat: updateAnimations().

Ini lebih sulit daripada rumit. Pada dasarnya kita menghitung berapa banyak kita bergerak secara vertikal dan horizontal. Mana pun yang memiliki lebih banyak gerakan, kita menggunakan animasi arah itu. Ini akan berperan jika Anda bergerak pada suatu sudut dan tiba-tiba menabrak sesuatu. Arah mana pun Anda masih bisa bergerak akan menentukan animasi yang digunakan.

Kita hanya punya satu hal lagi yang harus dilakukan sebelum kita akhirnya bisa mengeluarkan kotak merah dari kesengsaraannya. Kita perlu memberitahu Player untuk menggunakan sprite sheet ranger.

Sekali lagi kita akan pergi ke kelas Assets kita untuk menarik gambar yang kita inginkan. Komentar memberi tahu Anda apa yang terjadi, tetapi izinkan saya memberi tahu Anda sedikit tentang "membalik" gambar. Alih-alih menghasilkan animasi yang berbeda saat bepergian ke kiri/kanan dan atas/bawah, Flixel cukup membalik animasi "kanan" untuk menjadikannya "kiri" dan membalik animasi "atas" untuk membuatnya "turun" (atau sebaliknya). Animasi "atas" dan "turun" kita terlihat sangat berbeda (dan sudah memiliki karya seni dengan semua arah), jadi kita memberi tahu Flixel untuk tidak repot-repot membalik animasi.

Sekarang kita memiliki level RPG top-down indoor sejati!

an indoor room with wooden floors, stone walls, furniture, and an animated ranger player running down the left side

Langkah 11: Menambahkan GUI

Sebagai bonus, mari kita lihat bagaimana cara menambahkan elemen GUI ke layar. Kita akan menambahkan serangkaian instruksi sederhana di bagian atas sehingga pengguna tahu apa yang harus dilakukan setelah mereka memuat level ini. Mari tambahkan GUI ke IndoorHouseLevel.

Ini menambahkan area teks di bagian atas layar yang selebar level dan menggunakan perataan center. Seperti biasa, harus ditambahkan ke grup yang tepat agar dapat muncul.


Kesimpulan

Sekarang Anda memiliki semua yang Anda butuhkan untuk membuat level RPG top-down Anda sendiri. Terima kasih untuk tetap bersama saya dan buat sesuatu yang menyenangkan!

Advertisement
Advertisement
Advertisement
Advertisement
Looking for something to help kick start your next project?
Envato Market has a range of items for sale to help get you started.