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

Tip Cepat: Jeda, Gerak Lambat & Waktu-Ganda dalam Unity

by
Read Time:7 minsLanguages:

Indonesian (Bahasa Indonesia) translation by Ari Ana (you can also view the original English article)

Menjeda permainan Unity itu mudah. Ada beberapa hal yang harus Anda waspadai, tetapi kita akan membahasnya di bagian akhir tip ini. Kita akan menambahkan beberapa tombol GUI sederhana untuk mengontrol waktu dalam proyek Unity dasar.


Pratinjau Hasil Akhir

Mari kita lihat hasil akhir yang akan kita jalani:

Unity Web Player. Install now!

Langkah 1: Membuat Sebuah Proyek Baru

Mari kita mulai dengan membuka Unity dan membuat proyek baru. Anda mungkin ingin menambahkan beberapa animasi atau semacam tindakan ke proses, sehingga Anda benar-benar dapat melihat efek ketika kita menekan tombol. Dalam contoh yang diberikan, saya hanya membuat beberapa kubus berputar sederhana.

Membuka proyek baru itu bagus dan sederhana. Setelah Unity selesai memuat, jika Anda telah mengaturnya untuk menampilkan Project Wizard Anda dapat mengklik tab 'Create New Project' dan masukkan nama file. Unity akan mengurus sisanya. Jika jendela Project Wizard tidak muncul ketika Anda meluncurkan Unity, buka File > New Project.

Creating a new Unity project

Langkah 2: Membuat Skrip JavaScript Baru

Unity memiliki sistem GUI-nya sendiri, yang jauh melampaui tip ini. Mari kita katakan bahwa semuanya berhubungan GUI terjadi dalam fungsi yang disebut OnGUI dan kelas GUI menyediakan sejumlah besar hal-hal keren, seperti tombol.

Lanjutkan dan buat skrip baru melalui menu Assets - pilih Assets > Create > JavaScript:

Creating a new scriptCreating a new scriptCreating a new script

Membuat skrip baruSkrip baru Anda akan muncul di jendela Project. Klik sekali pada skrip dan itu harus disorot sehingga Anda dapat mengganti namanya. Beri nama skrip "PauseScript" dan tekan enter. Sekarang kita ingin memulai pengkodean, jadi lanjutkan dan klik ganda kali ini. Itu akan membuka editor skrip default dengan kode template / default Unity yang sudah ada di dalamnya. Setelah editor skrip dimuat, hapus kode default dan ganti dengan kode di bawah ini:

GUI.Button membutuhkan Rect (yang berisi x, y, lebar dan tinggi tombol kita) dan string untuk ditampilkan di dalamnya. Mencari tahu apakah tombol telah ditekan semudah meletakkan metode draw GUI.Button kita ke dalam pernyataan if.


Langkah 3: Mengkodekan Fungsi Toggle Jeda

Di sini, kita mengacu pada fungsi yang akan kita panggil doPauseToggle(). Ini akan menjadi fungsi sederhana yang memeriksa untuk melihat apakah kita dijeda atau tidak dijeda, lalu melakukan tindakan yang benar. Tambahkan kode berikut ke bagian bawah skrip PauseScript.js Anda, di bawah fungsi OnGUI yang kita tambahkan di Langkah 2:

Time.timeScale adalah bagaimana kita berurusan dengan menghentikan permainan. Pada dasarnya, kita mengubah skala waktu berlalu. Ketika timeScale adalah 1.0, waktu adalah waktu nyata. Pada nol (0), waktu dijeda. Jadi dalam fungsi doPauseToggle kita, kita hanya memeriksa untuk melihat apakah waktu lebih besar dari nol, tidak dijeda, jika demikian kita memanggil fungsi new pauseGame(). Jika tidak, unPauseGame() yang dipanggil.


Langkah 4: Mengkode Fungsi Pause dan Un-pause

Fungsi dalam Langkah 3, pauseGame() dan unPauseGame(), cukup memanipulasi nilai Time.timeScale ke 0 atau 1. Tambahkan kode berikut ke bagian bawah skrip PauseScript.js Anda, di bawah kode yang kita tambahkan di Langkah 3:

Percaya atau tidak, hanya itu yang perlu kita lakukan untuk menambahkan tombol pause ke file Unity. Jika Anda memiliki beberapa tindakan dalam adegan Unity Anda, Anda sekarang akan melihat bahwa itu berhenti dan tidak dijeda kapan pun kita mengklik tombolnya! Perhatikan bahwa jika Anda tidak memiliki sesuatu yang terjadi dalam adegan Anda, Anda tidak akan melihat apa pun terjadi ketika Anda menekan tombol putar.


Langkah 5: Bergerak dalam Gerakan Lambat

Apakah Anda memikirkan apa yang saya pikirkan? Jika 0 jeda dan 1 membuatnya pergi, bagaimana dengan 0,5? Pikirkan bullet-time!

Pertama, mari kita lanjutkan dan tambahkan tombol baru ke fungsi OnGUI() kita. Jatuhkan ini di bagian bawah fungsi, tepat di atas tanda kurung kurawal penutup }.

Sekarang kita membutuhkan fungsi baru untuk menyesuaikan faktor waktu hingga kurang dari 1. Gulir ke bawah ke bagian bawah skrip PauseScript.js Anda dan tambahkan fungsi baru ini:

...dengan demikian membuktikan bahwa Anda tidak harus menjadi Neo untuk bullet-time di Unity!


Langkah 6: Gandakan waktu!

Akhirnya, untuk bersenang-senang, mari kita buat semuanya menjadi sedikit gila dengan bermain dalam waktu ganda. Meskipun saya tidak melihat ini digunakan dalam permainan mekanik yang sebenarnya, saya telah melihat waktu terskala sementara untuk mendapatkan efek partikel dan berjalan - itu adalah efek api dan penulis ingin layar diisi dengan api dengan cepat untuk membawa latar belakang layar menu agar menjadi hidup. Dia menghitung waktu tinggi untuk sesaat setelah menu dimuat dan api memenuhi layar. Dia kemudian mengurangi waktu kembali ke 1 sehingga nyala api bergerak dengan benar dan semua hal lain dalam permainan berjalan dengan kecepatan biasa.

Untuk menambahkan waktu ganda, kita akan mengikuti prosedur yang sama seperti pada Langkah 5, menambahkan tombol baru yang akan memanggil fungsi baru. Fungsi baru hanya akan mengatur waktu kita menjadi 2. Temukan fungsi OnGUI() di skrip PauseScript.js Anda dan tambahkan yang berikut, di atas ujung fungsi dan di atas tanda kurung kurawal penutup }.

Benar. Kita memiliki tombol, mari tambahkan fungsi doubleTime():

Untuk bersenang-senang, coba sesuaikan waktu hingga 100 dan lihat apa yang terjadi.


Mari kita mengambil stok skrip kita. Berikut adalah PauseScript.js secara penuh, untuk berjaga-jaga jika sesuatu yang buruk terjadi di sepanjang jalan:


Kata-kata Akhir dan Beberapa Kejutan!

Penting untuk dicatat bahwa Time.timeScale tidak akan mempengaruhi kode dalam fungsi Update(). Pembaruan terjadi setiap "tick" dan itu terjadi di luar skala waktu, jadi jika Anda perlu hal-hal terjadi karena permainan dijeda, seperti animasi latar belakang, tempat untuk meletakkannya kemungkinan besar adalah Update. Periksa dokumentasi Unity untuk informasi lebih lanjut tentang ini.

Perhatikan bahwa jika Anda mengubah nilai Time.timeScale, tindakan terkait waktu seperti panggilan ke fungsi Invoke atau pengatur waktu yang menggunakan nilai dari Time.time juga akan terpengaruh oleh perubahannya. Jika permainan Anda berjalan dengan kecepatan dua kali lipat, Anda harus mengurangi separuh kecepatan tindakan berbasis waktu Anda (misalnya, jika Anda memiliki permainan balap dengan pengatur waktu putaran dan Time.timeScale Anda diatur ke 2.0, Anda harus memperlambat waktu putaran hingga setengah untuk mengukur waktu secara akurat).

Reaksi fisika tidak terpengaruh secara langsung, jadi permainan Anda harus berjalan seperti biasanya bertabrakan dan secara fisika - hanya pada skala waktu yang berbeda.

Itu saja! Terima kasih telah membaca tip singkat saya. Bermain-mainlah dengan Time.timeScale dan saya berharap untuk melihat efek mirip Matrix yang keren dalam proyek Anda. Bersenang-senanglah, membuat permainan!

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.