BUAT DUNIAMU
Pemain & Karakter: Lanjutan
Menggunakan acara animasi
14min
peristiwa animasi menyediakan cara untuk memanggil fungsi yang disesuaikan atau melakukan tindakan pada waktu tertentu dalam klip animasi ini memungkinkan interaksi antara animasi dan skrip, dan berguna saat melakukan tindakan pada waktu yang tepat dari animasi menambahkan peristiwa ke animasi objek contoh berikut menambahkan peristiwa animasi ke objek yang dianimasikan struktur ini mengeluarkan informasi ke log konsol setiap kali peristiwa dieksekusi dengan menambahkan peristiwa naik dan turun ke animasi yang berulang naik dan turun 1\) pilih gameobject > 3d object > cube untuk membuat kubus di dalam scene pilih kubus yang telah dibuat dan tambahkan komponen animator dengan mengklik tombol tambah komponen di panel inspector terapkan animator controller kubus ke animator yang telah ditambahkan terapkan klip animasi kubus ke entri animator controller kubus agar animasi kubus dapat diputar saat scene dimainkan silakan merujuk ke panduan berikut untuk pendaftaran animator dan pengeditan klip animasi 📘 panduan acara animasi unity https //docs unity3d com/kr/current/manual/script animationwindowevent html https //docs unity3d com/kr/current/manual/script animationwindowevent html 📘 tutorial animasi belajar unity https //learn unity com/tutorial/may 18 animation?language=en# https //learn unity com/tutorial/may 18 animation?language=en# 2\) tambahkan properti berikut ke klip animasi kubus ada key frame posisi (x 0, y 0, z 0) di bagian 0 detik, 2 detik dari klip animasi kubus ada key frame posisi (x 0, y 1, z 0) di bagian 1 detik dari klip animasi kubus (1) daftarkan event animasi di bagian 1 detik dari klip animasi kubus fungsi panggil string atas (2) daftarkan event animasi di bagian 2 detik dari klip animasi kubus fungsi panggil string bawah saat menulis peristiwa animasi melalui c# di unity, tulis nama fungsi dalam function namun, untuk memanggil peristiwa animasi dalam typescript, invoke harus ditulis dalam funtion dan nama fungsi harus ditulis dalam string, nilai argumen 3\) buat proyek > buat > zepeto > typescript dan ganti namanya menjadi objectanimationcontroller tulis skrip contoh seperti di bawah ini objectanimationcontroller ts import { zepetoscriptbehaviour } from 'zepeto script' export default class objectanimationcontroller extends zepetoscriptbehaviour { public up() { console log(`cube is up`); } public down(){ console log(`cube is down`); } } 4\) jika anda menekan tombol play untuk menjalankannya, anda dapat melihat keluaran log konsol saat animasi kubus diputar putar suara langkah kaki menggunakan peristiwa animasi pada karakter lokal untuk menambahkan peristiwa animasi ke animator karakter zepeto, peristiwa tersebut harus ditambahkan saat runtime, ketika karakter dibuat contoh berikut menerapkan peristiwa pada animation clip tertentu dari animator pemain lokal saat runtime, dan memutar suara langkah kaki ketika peristiwa terjadi 1\) buat skrip footstepcontroller yang akan diterapkan pada objek animator pemain lokal footstepcontroller bertanggung jawab untuk menambahkan peristiwa animasi ke animator buat proyek > buat > zepeto > typescript dan ganti namanya menjadi footstepcontroller tulis skrip seperti di bawah ini footstepcontroller ts import { animationevent, animator, audioclip, audiosource } from 'unityengine'; import { zepetoscriptbehaviour } from 'zepeto script'; export default class footstepcontroller extends zepetoscriptbehaviour { // suara yang digunakan untuk efek langkah kaki public footstepsound audioclip; // sumber audio untuk memutar suara langkah kaki private zepetoaudio audiosource; // menambahkan event animasi untuk memicu suara langkah kaki public addanimationevent() { // dapatkan komponen animator yang terpasang pada gameobject ini const anim = this getcomponent\<animator>(); // periksa apakah komponen animator ada if (anim != null) { // buat audiosource untuk suara langkah kaki this setaudio(); // tentukan waktu dalam klip animasi ketika suara langkah kaki harus diputar const runsoundeventtimes = \[0 1, 0 6]; // tambahkan event animasi ke klip animasi yang ditentukan this addanimationclipevent(anim, "move walk", runsoundeventtimes); } } // menyiapkan audiosource untuk memutar suara langkah kaki private setaudio() { // buat dan konfigurasi komponen audiosource this zepetoaudio = this gameobject addcomponent\<audiosource>(); this zepetoaudio clip = this footstepsound; } // mengaktifkan suara langkah kaki public activatefootsteps() { // keluarkan pesan log yang menunjukkan bahwa suara langkah kaki sedang diputar console log("langkah kaki!"); // putar suara langkah kaki menggunakan audiosource yang telah dikonfigurasi this zepetoaudio play(); } // menambahkan event animasi ke klip animasi yang ditentukan private addanimationclipevent(anim animator, clipname string, eventtimes number\[]) { // inisialisasi indeks klip animasi let animationclipindex number; // dapatkan semua klip animasi dari runtimeanimatorcontroller const clips = anim runtimeanimatorcontroller animationclips; // temukan indeks klip animasi yang ditentukan for (let i = 0; i < clips length; i++) { if (clips\[i] name == clipname) { animationclipindex = i; } } // iterasi melalui waktu event yang ditentukan eventtimes foreach(eventtime => { // buat animationevent baru untuk pemicu suara langkah kaki const newevent animationevent = new animationevent(); newevent time = eventtime; newevent functionname = "invoke"; newevent stringparameter = "activatefootsteps"; // tambahkan animationevent baru ke klip animasi clips\[animationclipindex] addevent(newevent); }); } } deskripsi skrip footstepcontroller menambahkan sebuah event animasi dan memutar efek suara langkah kaki saat event tersebut terjadi setaudio() menambahkan komponen audiosource untuk menerapkan suara langkah kaki pada objek addanimationclipevent() menambahkan sebuah event animasi ke klip animasi yang ditentukan anda harus memasukkan elemen berikut sebagai nilai argumen animator untuk pemain lokal nama klip animasi yang diterapkan event sebuah array waktu animasi untuk menerapkan event dalam newevent yang terdaftar dengan addanimationclipevent(), item item berikut diatur (1) newevent time waktu animasi ketika peristiwa terjadi nilai 0 adalah awal dari panjang penuh, dan nilai 1 adalah akhir dari panjang penuh (2) newevent functionname nama fungsi yang dipanggil saat peristiwa terjadi dalam typescript, itu harus ditulis sebagai "invoke" (3) newevent stringparameter nilai parameter yang ditetapkan untuk fungsi saat peristiwa mengeksekusi fungsi typescript mencantumkan nama fungsi yang akan dieksekusi ketika peristiwa terjadi, activatefootsteps() dieksekusi dan suara langkah kaki diputar 2\) sekarang buat footstepmanager yang menambahkan komponen footstepcontroller ke objek animator pemain lokal saat pemain lokal dibuat pada runtime proyek > buat > zepeto > typescript dan ganti namanya menjadi footstepmanager tulis skrip seperti di bawah ini footstepmanager ts import { spawninfo, zepetoplayers } from 'zepeto character controller' import { zepetoscriptbehaviour } from 'zepeto script' import footstepcontroller from ' /footstepcontroller' import { worldservice } from 'zepeto world' import { audioclip } from 'unityengine'; export default class footstepmanager extends zepetoscriptbehaviour { // suara yang akan diputar untuk langkah kaki public footstepsound audioclip; start() { // pendengar acara ketika pemain lokal ditambahkan zepetoplayers instance onaddedlocalplayer addlistener(() => { // akses karakter zepeto dari pemain lokal const zepetocharacter = zepetoplayers instance localplayer zepetoplayer character; // lampirkan skrip footstepcontroller ke gameobject zepetoanimator const footstepcontroller = zepetocharacter zepetoanimator gameobject addcomponent\<footstepcontroller>(); // atur footstepsound untuk footstepcontroller footstepcontroller footstepsound = this footstepsound; // tambahkan acara animasi untuk memicu langkah kaki footstepcontroller addanimationevent(); }); } } deskripsi skrip setelah footstepmanager mendeteksi bahwa pemain lokal sedang ditambahkan, ia melampirkan skrip footstepcontroller ke gameobject zepetoanimator pemain footstepcontroller bertanggung jawab untuk menambahkan acara animasi yang memutar suara langkah kaki skrip fungsi yang dieksekusi oleh acara animasi dari animator harus diterapkan secara identik pada objek yang diterapkan komponen animator yang sesuai jadi anda perlu menemukan zepetoanimator gameobject dan menerapkan skrip footstepcontroller sebagai addcomponent 3\) terapkan suara langkah kaki ke footstepsound dari footstepmanager 4\) jika anda menekan tombol putar untuk menjalankannya, anda dapat melihat bahwa suara diputar sesuai dengan langkah pemain lokal setiap kali mereka berjalan 👍 tips zepeto animator dasar terdiri dari beberapa campuran dan keadaan animasi karena contoh ini hanya menerapkan suara pada keadaan move walk, anda dapat menyesuaikan addanimationclipevent() dan memasukkannya langsung ke keadaan seperti berjalan cepat dan berlari ketika suara diterapkan pada beberapa keadaan animasi, suara langkah kaki mungkin tumpang tindih karena campuran animasi untuk mengatasi ini, tulis pernyataan kondisional tambahan sehingga suara yang sesuai diputar ketika animationevent animatorclipinfo weight adalah 0 5 ❗️ masalah dikenal ketika diimplementasikan mengikuti gaya panduan pengembangan, pesan kesalahan berikut mungkin muncul, tetapi tidak ada masalah dengan eksekusi