Cara Membuat Kecerdasan Buatan untuk Slime Musuh | hyperPad Documentation

Loading...

Logo

IMG_0139.TRIM.GIF

Nota: Fail projek yang lengkap untuk tutorial ini boleh didapati di penghujung artikel ini.

Pengenalan

Dalam tutorial ini, kita akan mencipta kecerdasan buatan (AI) untuk slime musuh yang meyakinkan untuk permainan gaya platformer. Kita akan merangkumi beberapa ciri dan perilaku yang lebih maju dalam hyperPad, jadi tutorial ini mengandaikan sedikit pengetahuan asas dengan editor hyperPad. Jika anda fikir anda perlu lebih memahami tentang cara membuat permainan dari awal, anda boleh menyemak Panduan Lengkap - Membuat Permainan Platform terlebih dahulu.

Untuk menjadikan slime kelihatan "kongruen", ia perlu melakukan lebih daripada sekadar bergerak ke sana sini, dan perlu disedari sedikit tentang sekelilingnya.

Sangat menarik! Tetapi sebelum kita mulakan, kita harus terlebih dahulu merincikan bagaimana slime musuh seharusnya bertindak:

  • Daripada berjalan, slime akan melompat ke kiri atau kanan untuk bergerak.
  • Slime akan melompat ke arah pemain.
  • Jika pemain terlalu jauh, slime tidak akan bergerak (diam).
  • Slime akan menghapuskan kesihatan pemain apabila bersentuhan.
  • Slime dikalahkan jika pemain melompat di atasnya.

Sekarang kita tahu apa yang ingin kita lakukan, mari kita mulakan!

Bahagian 1: Penyediaan Projek

Dalam tutorial ini, kita akan memulakan projek baru dari awal untuk memudahkan perkara. Buat projek baru dan set ke "Pandangan Sisi", anda boleh membiarkan tetapan lain sebagai nilai lalai mereka.

Setelah projek baru anda dicipta, pergi ke Perpustakaan Aset dan ambil "Pakej Permulaan Platformer" oleh hyperPad dalam kedai aset. (Ia percuma!)

a7JUWwiO.jpg

Photo_2019-06-26__1_15_13_PM.png

Sekarang kita mempunyai beberapa aset untuk bekerja, sila letakkan beberapa blok tanah dan cipta dunia anda. Jika anda belum berada di sana, pergi ke Perpustakaan Aset dan tekan pada "Muat Turun", kemudian "Pakej Permulaan Platformer".

Dalam gambar di bawah, beberapa blok tanah (dalam folder "Grass World") telah diletakkan dan satu latar belakang (dalam folder "Backgrounds") telah ditetapkan.

Photo_2019-06-26__1_16_22_PM.png

Kini kita mempunyai satu pemandangan yang baik untuk bekerja, mari kita tambah objek Pemain dan Slime. Pergi ke Perpustakaan Aset dan buka folder "Muat Turun", kemudian folder "Pakej Permulaan Platformer" jika ia tidak terbuka sudah.

Kita akan menggunakan "Green Spaceman" sebagai pemain, jadi tekan pada aset spaceman hijau untuk melihat semua kitaran animasinya. Secara lalai, kita mahu pemain hanya berdiri, jadi tekan pada animasi "Stand" dan letakkan di atas pemandangan.

Dalam folder yang sama dalam Perpustakaan Aset, terdapat juga watak animasi "Slime Pink". Sempurna untuk kita gunakan sebagai musuh slime! Tekan pada aset slime dan pilih animasi "Move" dan tempatkan slime di atas pemandangan anda dengan watak pemain anda.

Photo_2019-06-26__1_17_03_PM.png

Setakat ini, sangat baik! Kini kita mempunyai objek pemain dan objek slime, siap untuk digunakan. Tetapi jika kita bermain projek kita sekarang, kita tidak akan dapat berinteraksi dengan permainan. Oleh itu, kita perlu mencipta sedikit logik untuk membawa hayat kepada permainan kita.

Bahagian 2: Kawalan Pemain

Sebelum kita dapat memberikan kehidupan kepada slime musuh kita, kita harus terlebih dahulu menyediakan beberapa kawalan pemain untuk spaceman hijau.

Tekan pada spaceman hijau dan tetapkan mod fiziknya dari Wall kepada Physical, yang akan membolehkan pemain bergerak dengan bebas. Kemudian, tekan butang "Perilaku" untuk membuka editor Perilaku untuk watak pemain kita supaya kita boleh menambah beberapa kawalan.

IMG_0054.JPG

Dalam editor perilaku untuk watak pemain kita, anda seharusnya sudah melihat satu Mainkan Animasi yang sunyi. Kita boleh membiarkan perilaku itu begitu sahaja, tetapi kita boleh memberikannya sedikit kawan.

Di bawah bahagian Interaksi, letakkan mana-mana Kawalan Joystick serta Melompat dengan Butang perilaku. Dengan perilaku ini, pemain kita kini bersedia untuk dikawal. Tetapi, ia kekurangan sedikit animasi.

Tekan pada perilaku Kawalan Joystick dan tetapkan "Animasi Joystick Kiri" kepada kitaran animasi "Walk" dalam aset Spaceman Hijau. Lakukan perkara yang sama dengan "Animasi Joystick Kanan"

Photo_2019-06-26__1_18_28_PM.png

Kini watak pemain kita berjalan, tetapi masih tidak menganimasi apabila mereka melompat.

Tekan pada perilaku Melompat dengan Butang dan ubah kedua-dua "Animasi Jatuh" dan "Animasi Melompat" kepada kitaran animasi "Jump".

Photo_2019-06-26__1_18_56_PM.png

Jika kita bermain permainan kita sekarang, kita boleh bergerak dan melompat! Selanjutnya, kita dapat bekerja pada musuh slime kita.

Photo_2019-06-26__1_19_50_PM.png

Bahagian 3: Pergerakan Slime

Seperti yang kita terangkan dalam bahagian pengenalan tutorial ini, kita mahu slime kita melompat ke arah pemain. Untuk melakukan ini, slime kita perlu tahu di mana pemain berada di dunia. Oleh itu, kita perlu menambah Tag kepada watak pemain kita, supaya perilaku kita dapat mengambil watak pemain kita di mana-mana pemandangan.

Tekan pada watak pemain, dan pilih tab Tag di bahagian bawah pandangan sifat. Taip "Pemain" dalam medan teks di atas menu tag dan tekan butang tambah (+) di sebelahnya. Kini watak pemain kita ditandakan dengan tag "Pemain".

Photo_2019-06-26__1_23_06_PM.png

Sama seperti yang kita lakukan dengan watak pemain, tekan pada slime dan tetapkan mod fiziknya dari Wall kepada Physics. Kemudian, tekan butang Perilaku untuk membuka editor perilaku slime.

IMG_0058.JPG

Dalam editor perilaku, pergi ke bahagian Custom dan masukkan perilaku Timer ke dalam editor.

Tekan pada perilaku Timer dan tetapkan intervalnya kepada 2 saat.

Photo_2019-06-26__4_21_59_PM.png

Ini akan menjadi permulaan logik untuk kecerdasan buatan slime kita.

Idea di sini adalah bahawa setiap 2 saat, slime kita akan "berfikir" tentang apa yang perlu dilakukan seterusnya, seperti: Haruskah slime Melompat? Jika ia memilih untuk melompat, arah manakah yang harus dilompat?

Seterusnya, pergi ke bahagian Transform dan letakkan perilaku Dapatkan Posisi perilaku. Tekan pada itu dan tetapkan sasarannya kepada tag "Pemain" yang kita cipta sebelum ini dengan menekan pada tab Tag di bahagian bawah pandangan sifatnya dan memilih "Pemain". Sekarang sambungkan Timer ke perilaku Dapatkan Posisi.

Photo_2019-06-26__4_22_22_PM.png

Sekarang kita tahu di mana pemain kita berada di dunia! Untuk menentukan sama ada pemain itu berada di kiri atau kanan slime, kita juga perlu tahu di mana slime berada di dunia juga.

Seret perilaku Dapatkan Posisi lain ke dalam editor. Secara lalai, perilaku itu sudah menyasarkan slime kita jadi kita tidak perlu melakukan apa-apa lagi selain menyambungkannya kepada cabang logik kita. Sambungkan Dapatkan Posisi untuk pemain kepada Dapatkan Posisi untuk slime.

Photo_2019-06-26__4_22_40_PM.png

Opsyenal: Untuk memudahkan pemahaman, saya telah menamakan perilaku Dapatkan Posisi saya dengan jelas untuk menunjukkan apa yang mereka sedang menjejaki: "Dapatkan Posisi Pemain" dan "Dapatkan Posisi Slime". Ini adalah pilihan, tetapi jika anda juga ingin menukar nama perilaku, anda boleh melakukannya dengan mengetuk perilaku dan menekan namanya di bahagian atas pandangan sifat.

Setakat ini, apa yang kita ada ialah bahawa setiap 2 saat, slime akan mengambil posisi watak pemain dan dirinya sendiri. Kini kita mempunyai maklumat itu, kita boleh menentukan sama ada slime harus melompat ke kiri atau kanan.

Di bawah tab Logik, drop dan sambungkan perilaku Jika. Dalam sifatnya, tetapkan nilai yang pertama kepada nilai keluaran perilaku Dapatkan Posisi yang pertama (tag "Pemain") dengan menyeret nilai keluaran perilaku ke dalam bidang dalam sifat jika. Untuk nilai kedua, tetapkan ia kepada nilai x-positon Dapatkan Posisi kedua (slime). Akhirnya, tetapkan syarat perilaku jika kepada "Adalah Kurang Daripada" (<).

Nota: Posisi x-objek adalah nilai yang mewakili di mana objek berada di dunia pada paksi x-nya. (Kiri dan kanan)

IMG_0061.JPG

Jadi, apa semua ini bermakna? Perilaku jika akan memeriksa untuk melihat jika posisi x-pemain adalah kurang daripada posisi x-slime. Jika yang di atas benar, maka ia akan melaksanakan perilaku yang seterusnya. Apa yang ini sebenarnya bermaksud, ialah jika pemain berada lebih jauh ke kiri daripada slime, maka pelaksanaan perilaku akan diteruskan.

Baiklah, kita kini mempunyai logik untuk membuat slime melompat ke kiri, jadi mari kita buat slime melakukan tepat itu!

Di bawah bahagian perilaku Fizik, drop dan sambungkan perilaku Terapkan Daya kepada perilaku jika. Dalam sifatnya, tetapkan Daya kepada: x = -0.5, y = 1. Kemudian, tetapkan pekali kepada nombor yang agak besar, 200 seharusnya memadai.

Photo_2019-06-26__1_28_06_PM.png

Apa yang kita miliki sekarang, ialah jika slime menjumpai pemain lebih jauh ke kiri daripada dirinya, ia akan melompat ke atas (y = 1 × 200) dan sedikit ke kiri (x = -0.5 × 200).

Cuba! Mainkan permainan dan ujian untuk memastikan semuanya berfungsi. Apa yang anda sepatutnya lihat ialah slime melompat ke kiri setiap 2 saat, selagi pemain berada di sebelah kiri. Jika anda membawa pemain ke sebelah kanan slime, ia seharusnya berhenti melompat sehingga anda bergerak ke kiri semula.

Photo_2019-06-26__1_28_50_PM.png

Nota: Jika slime anda tidak bergerak, semak langkah-langkah sebelumnya untuk memastikan anda tidak terlepas apa-apa. Pastikan perilaku disambungkan dengan betul, dan bahawa mod fizik slime anda ditetapkan kepada Fizik (boleh bergerak) dan bukan Wall (tidak boleh bergerak). Juga, tidak lama lagi kita akan menyelesaikan masalah di mana kadang-kadang slime akan terbalik atau terbalik.

Kemajuan yang hebat setakat ini! Jika slime anda melompat sekitar seperti yang diharapkan, maka kita sedia untuk meneruskan. Mari kita lengkapkan perilaku pergerakan dengan membolehkan slime melompat ke kanan juga.

Kembali ke editor perilaku slime, duplikasi perilaku jika. Seret dan sambungkan perilaku jika baru ke sebelah kanan perilaku jika asal. Ini akan menukarkannya kepada perilaku "Else If".

Duplikasi perilaku Terapkan Daya juga, dan sambungkan itu kepada perilaku Else If baru. Dalam sifat Else If, tukar syarat dari "Adalah Kurang Daripada" (<) kepada "Adalah Lebih Daripada" (>). Ini akan mempunyai kesan sebaliknya dari yang pertama Jika. Jika pertama Jika tidak benar, ia kemudian akan memeriksa sama ada Else If itu benar sebaliknya. Ini bermakna, jika pemain tidak berada di sebelah kiri slime, ia akan memeriksa jika pemain berada di sebelah kanan slime, dan meneruskan pelaksanaan perilaku yang disambungkan kepada Else If sebaliknya.

Anda seharusnya sekarang mempunyai cabang perilaku yang kelihatan seperti ini:

Photo_2019-06-26__1_30_01_PM.png

Dalam perilaku Terapkan Daya kedua (di bawah Else-If), ubah sifatnya supaya dayanya adalah x = 0.5, dan bukannya x = -0.5. Kini, daripada melompat ke kiri, slime akan melompat ke kanan.

Photo_2019-06-26__1_30_05_PM.png

Mainkan projek dan cuba lagi! Kini anda seharusnya melihat slime melompat ke arah pemain. Cemerlang!

Satu perkara yang mungkin anda perhatikan semasa mencuba, adalah bahawa jika anda berlanggar dengan slime, ia kadang-kadang boleh jatuh di sisinya atau terbalik. Kita mahu slime tetap tegak, jadi mari kita perbaiki itu secepat mungkin.

Kembali ke editor perilaku slime, pergi ke bahagian perilaku Transform dan drop perilaku Kunci Putaran ke dalam editor. Tidak perlu menyambungkannya kepada perilaku lain, kita mahu mengunci putarannya sebaik sahaja slime dicipta sehingga anda boleh membiarkannya begitu sahaja. Setelah anda melakukannya, cuba permainan sekali lagi. Kali ini anda seharusnya ada satu masalah untuk mencuba untuk menjatuhkan slime di sisinya.

Photo_2019-06-26__1_32_26_PM.png

Anda mungkin juga perhatikan bahawa animasi slime sedang dimainkan terlalu cepat. Jika ini berlaku, tekan pada perilaku Mainkan Animasi dalam editor perilaku slime dan ubah Kadar Bingkai per Saat kepada nombor yang jauh lebih kecil. 6 bingkai per saat kelihatan baik.

Photo_2019-06-26__1_38_22_PM.png

Bagus! Sekarang slime kita bukan sahaja bergerak dengan cantik, tetapi juga kelihatan hebat. Untuk sebahagian besar, logik pergerakan slime kita sudah lengkap.

Namun, kita juga mahu slime hanya melompat jika pemain berada berhampiran. Dengan cara ini jika kita membina dunia yang lebih besar, slime yang jauh tidak akan segera cuba melompat ke arah dan menyerang pemain. Dalam bahagian seterusnya, kita akan melihat menambah satu lagi syarat untuk menghalang logik melompat jika pemain terlalu jauh.

Bahagian 4: Slime Diam

Dalam bahagian ini, kita akan melaksanakan beberapa perilaku slime yang akan menjadikannya diam (iaitu, tidak bergerak) apabila pemain terlalu jauh.

Untuk mencapai ini, kita perlu mencari cara untuk mengukur jarak antara slime kita dan pemain. Kebetulan, terdapat perilaku yang tersedia untuk melakukan perkara itu! Mari kita mula bekerja.

Buka editor perilaku slime dan turunkan perilaku Kira Jarak dari bahagian Logik. Dalam sifat perilaku itu, objek pertama sudah ditetapkan kepada slime kita. Untuk objek kedua, pergi ke menu Tabs dan pilih tag "Pemain".

Photo_2019-06-26__1_48_54_PM.png

Perilaku ini, apabila dilaksanakan, akan mengira jarak dalam meter dari slime kita kepada pemain. Menggunakan maklumat itu, kita boleh lihat jika pemain terlalu jauh dengan memeriksa jika ia melebihi jarak tertentu.

Letakkan perilaku Jika lain dari bahagian Logik dan sambungkan di bawah perilaku Kira Jarak. Dalam sifat perilaku Jika, tetapkan nilai yang pertama kepada nilai keluaran Kira Jarak. Tetapkan syarat kepada "Adalah Kurang Daripada" dan nilai kedua kepada 15.

Sekarang apa yang kita ada, ialah cara untuk memeriksa jika pemain terlalu jauh dengan melihat jika jarak antara slime dan pemain adalah kurang daripada 15 (meter). Jika syarat itu palsu, maka pemain itu terlalu jauh dan perilaku jika tidak akan melaksanakan perilaku seterusnya.

IMG_0085.JPG

Sekarang kita mempunyai syarat terbaru kita siap untuk digunakan, putuskan sambungan Dapatkan Posisi (slime) dan perilaku jika lama dari bahagian sebelumnya dan buat ruang untuk syarat baru kita. Anda boleh melepaskan sambungan perilaku dengan mengetuk dan memegang sambungan antara perilaku.

Dengan syarat jarak baru dalam tempat, sambungkan Dapatkan Posisi (slime) kepada perilaku Kira Jarak kemudian sambungkan perilaku jika baru kepada perilaku jika lama. Anda kini sepatutnya mempunyai sesuatu seperti ini:

Photo_2019-06-26__1_50_57_PM.png

Ia mulai kelihatan agak rumit sekarang, tetapi idea ini agak mudah. Sekarang apa yang kita ada, ialah sebelum kita memeriksa arah mana slime harus melompat, kita terlebih dahulu memeriksa sama ada jarak antara slime dan pemain adalah kurang daripada 15 (meter).

Jika pemain lebih dekat daripada 15 meter, maka ia akan meneruskan dan memeriksa arah mana kita harus melompat, seperti biasa. Jika pemain lebih jauh daripada 15 meter, kita tidak meneruskan dan logik berakhir di situ sehingga slime berikutnya "fikir" lagi (2 saat kemudian).

Cuba permainan! Jika anda terlalu dekat dengan slime ia seharusnya mula melompat ke arah anda, tetapi jika anda bergerak terlalu jauh ia seharusnya berhenti bergerak dan menunggu sehingga anda menghampiri semula.

Slime kita mulai kelihatan sangat menakutkan sekarang, tetapi ia masih hilang cara untuk merosakkan pemain. Dalam bahagian seterusnya tutorial ini, kita akan memberikan pemain bar kesihatan dan melaksanakan beberapa logik untuk memberikan kerosakan kepada pemain.

Bahagian 5: Menyerang Pemain

Seperti yang diterangkan dalam bahagian pengenalan, kita akan melaksanakan serangan slime dengan membuat slime menyakitkan pemain apabila ia menyentuh pemain. Untuk memulakan pelaksanaan cara untuk slime menyerang pemain, kita pertama perlu memberikan pemain beberapa kesihatan.

Dalam editor utama, pilih lapisan UI Pemandangan dan buat objek baru dengan menekan butang Objek Khas. Tekan pada "Bar Kesihatan" untuk membuat bar kesihatan untuk pemain kita.

IMG_0120.JPG

Oleh kerana ia diletakkan di lapisan UI Pemandangan, jika kita memilih untuk memperluas dunia kita dan membuat skrin mengikuti pemain, ia akan kekal di tempat yang sama di skrin.

Anda boleh meletakkannya di mana saja yang anda lihat sesuai di skrin. Saya telah meletakkannya di tengah skrin berhampiran bahagian bawah.

Photo_2019-06-26__1_39_49_PM.png

Apabila anda selesai mencari tempat yang baik untuk bar kesihatan anda, kita boleh mula bekerja menambah cara untuk menghapuskan kesihatan daripada bar kesihatan. Kembali kepada lapisan Utama tempat slime anda dan buka editor perilakunya sekali lagi.

Di dalam tempat kosong yang baik dalam perilaku slime anda, drop perilaku Bergaduh yang terletak di bawah bahagian Objek. Dalam sifatnya, tetapkan objek kedua kepada tag "Pemain".

Photo_2019-06-26__1_38_54_PM.png

Di bawah bahagian perilaku Kustom, drop perilaku Siarkan Mesej dan sambungkannya di bawah perilaku Bergaduh. Dalam sifat perilaku Siarkan Mesej, tetapkan Kunci Acara kepada "pemain dipukul", dan tetapkan nilainya kepada -10.

Ingat: Kunci acara peka kepada huruf besar! Untuk kesederhanaan, tutorial ini akan menggunakan huruf kecil untuk kunci acara. Anda boleh memilih untuk menggunakan huruf besar jika anda suka, tetapi pastikan anda ingat huruf mana yang huruf besar untuk nanti.

Photo_2019-06-26__1_41_06_PM.png

Sekarang kita mempunyai cara untuk mengesan apabila pemain harus mengambil kerosakan kesihatan. Apabila pemain bersentuhan dengan slime, mesej untuk acara "pemain dipukul" akan disiarkan dengan nilai -10. Kami akan menggunakan -10 itu untuk memberitahu bar kesihatan untuk "menambah" -10 kesihatan, dan kerana nilai itu adalah negatif ia akan menghapuskan 10 kesihatan.

Kita masih perlu menambah logik itu kepada bar kesihatan, jadi mari kita lakukan sekarang. Keluar dari editor perilaku slime kemudian dalam editor utama tekan pada lapisan UI Pemandangan dan kemudian tekan pada bar kesihatan. Buka editor perilaku untuk bar kesihatan.

Dalam editor perilaku bar kesihatan, drop perilaku Terima Mesej dari bahagian Kustom. Dalam sifatnya, tetapkan Kunci Acara kepada "pemain dipukul". (Ingat ia peka kepada huruf besar!)

Photo_2019-06-26__1_40_12_PM.png

Perilaku ini akan menjadi pendengar kita untuk mesej "pemain dipukul" yang dihantar apabila pemain mana-mana dalam permainan mengenai slime. Apabila perilaku ini mengesan mesej siaran untuk "pemain dipukul" di mana-mana dalam permainan, ia akan dilaksanakan.

Sekarang, tambahkan perilaku Tambah kepada Bar Kesihatan di bawah bahagian perilaku UI dan sambungkannya di bawah perilaku Terima Mesej.

Dalam sifat Tambah kepada Bar Kesihatan, seret nilai keluaran daripada Terima Mesej ke dalam bidang "Nilai untuk ditambah". Nilai itu akan menjadi nilai -10 yang telah kita tetapkan sebelum ini dalam perilaku Siarkan Mesej pada slime. Dengan cara ini, jika kita memilih untuk membuat musuh lain memberi kerosakan yang berbeza, semua yang kita perlu lakukan ialah mengubah nilai pada siaran kepada apa jua yang kita mahu dan bar kesihatan akan menggunakan nilai itu sebaliknya!

Pastikan "Acara Di Penuh" dimatikan, dan "Acara Di Kosong" dihidupkan. Ini bermakna jika bar kesihatan mencapai kesihatan sifar, ia akan melaksanakan perilaku seterusnya.

IMG_0080.JPG

Di bawah bahagian Pemandangan perilaku, drop perilaku Muat Overlay dan sambungkannya kepada perilaku Tambah kepada Bar Kesihatan.

Dalam tetapan Muat Overlay, tukar overlay yang dipilih kepada overlay "Game Over" yang secara automatik dicipta untuk anda apabila anda membuat projek baru.

IMG_0120.JPG

Mainkan permainan dan cuba! Sekarang, setiap kali anda bersentuhan dengan slime, ia seharusnya menguras bar kesihatan anda. Apabila bar kesihatan mencapai sifar, ia adalah permainan selesai.

IMG_0120.JPG

Bagus! Sekarang kita mempunyai satu cara untuk merosakkan pemain dan kehilangan permainan.

Sesuatu nampak agak berbeza, walau bagaimanapun. Kita tidak memberikan banyak maklum balas kepada pemain bahawa mereka telah dipukul selain menghapuskan kesihatan daripada bar kesihatan.

Kita boleh memperbaiki ini dengan mendorong pemain dan slime dari satu sama lain, menjadikan jelas bahawa mereka telah bersentuhan, serta menjaga pemain supaya tidak mengambil kerosakan terlalu cepat dengan berlanggar dengan slime secara cepat.

Pergi ke editor perilaku untuk slime (anda mungkin perlu memilih lapisan Utama terlebih dahulu), dan drop perilaku Dorong Objek di bawah bahagian Fizik. Sambungkan ia di bawah perilaku Siarkan Mesej dari sebelum ini dan buka sifatnya.

Dalam sifatnya, tukar objek kedua kepada tag "Pemain" dengan membuka tab Tag dan memilih "Pemain". Tukar nilai Daya kepada 200, Pekali Objek A kepada 0.25, dan Pekali Objek B kepada 1.

Photo_2019-06-26__1_45_59_PM.png

Kini apabila pemain bersentuhan dengan slime, ia akan mendorong pemain ke belakang dari slime dengan daya 200 (1 × 200 daya) dan slime akan didorong ke belakang dari pemain dengan daya 50 (0.25 × 200 daya).

Permainan kita mula terasa cukup baik sekarang! Hanya masalah sekarang adalah bahawa kita mempunyai slime yang tidak dapat ditewaskan dan pemain kita tiada cara untuk mengalahkannya. Dalam bahagian seterusnya, kita akan melaksanakan cara untuk pemain kita melawan kembali.

Bahagian 6: Mengalahkan Slime

Untuk membolehkan pemain kita menyerang slime dengan melompat di atasnya, kita perlu menukar bagaimana kita mengendalikan perlanggaran dengan membuat slime mengabaikan bahagian bawah pemain (kaki pemain) apabila memberikan kerosakan.

Buka editor perilaku untuk slime dan tekan perilaku Bergaduh yang kita buat dalam bahagian sebelumnya tutorial. Matikan pilihan "Di Bawah", yang akan mengabaikan perlanggaran jika slime bersentuhan dengan bahagian bawah kotak perlanggaran pemain.

Photo_2019-06-26__1_54_25_PM.png

Sekarang, slime kita tidak akan menyakiti pemain jika pemain melompat di atasnya. Sebaliknya kita ingin melaksanakan logik yang berbeza apabila itu berlaku.

Dengan acara Bergaduh dipilih, duplikat dan terbalik semua pilihan dalam perilaku Bergaduh yang baru supaya hanya acara "Di Bawah" sahaja yang diaktifkan.

Photo_2019-06-26__1_54_42_PM.png

Ini akan berfungsi sebagai titik masuk kita apabila pemain melompat di atas slime.

Seterusnya, drop dan sambungkan perilaku Hapuskan Objek dari bahagian perilaku Objek. Ia seharusnya sudah ditetapkan untuk memusnahkan objek slime kita secara lalai.

Photo_2019-06-26__1_54_53_PM.png

Sekarang apabila kita bermain permainan, melompat di atas slime akan memusnahkannya. Tetapi sekali lagi, seperti yang dilakukan dengan terkena pemukul dengan slime sebelum ini, ia tidak terasa sangat memuaskan.

Seperti yang kita lakukan dalam bahagian sebelumnya tutorial, mari kita tambah satu lagi Dorong Objek. Duplikasi perilaku Dorong Objek yang lebih lama daripada logik kerosakan pemain dan sambungkannya di bawah perilaku Hapuskan Objek. Sifatnya daripada perilaku Dorong Objek yang lebih lama boleh kekal sama.

IMG_0121.JPG

Kini apabila kita bermain permainan, terdapat satu lompatan kepuasan yang cantik apabila melompat di atas slime.

IMG_0130.TRIM.GIF

Kesimpulan & Latihan

Dan itu sahaja! Kami telah memeriksa semua kotak yang dibuat dalam bahagian pengenalan:

  • Daripada berjalan, slime akan melompat ke kiri atau kanan untuk bergerak. Semak!
  • Slime akan melompat ke arah pemain. Semak!
  • Jika pemain terlalu jauh, slime tidak akan bergerak (diam). Semak!
  • Slime akan menghapuskan kesihatan pemain apabila bersentuhan. Semak!
  • Slime dikalahkan jika pemain melompat di atasnya. Semak!

Jika anda telah sampai di sini, anda seharusnya kini mempunyai pemahaman yang baik tentang bagaimana anda boleh memberikan musuh anda sedikit kecerdasan, dan membiarkan mereka berfikir dan membuat keputusan sendiri. Syabas!

Namun, selalu ada lebih banyak perkara yang boleh dilakukan. Sebagai latihan, cuba lakukan yang berikut sendiri:

  1. Mainkan animasi "hit/mati" slime apabila slime dipijak oleh pemain.
  2. Mainkan animasi "hit" pemain apabila slime menyerang pemain.
  3. Tambah sedikit ketidakpastian pada sejauh mana slime akan melompat setiap kali.

Fail projek yang lengkap untuk tutorial ini boleh didapati di sini: Muat Turun Projek Tutorial