BUAT DUNIAMU
Pemain & Karakter: Dasar
Karakter ZEPETO
17min
zepetocharacter adalah unit dasar instansi karakter zepeto untuk dimuat dalam world scene untuk mengontrol zepetocharacter, tambahkan pernyataan impor berikut ke dalam skrip import { zepetocharacter } from 'zepeto character controller'; zepetocharacter api api ini membuat dan menghapus instansi karakter zepeto, termasuk komponen animator controller dan character controller api deskripsi createbyzepetoid(zepetoid string, spawninfo spawninfo, complete system action$1) gunakan zepeto id untuk menghasilkan instansi karakter zepeto utamanya digunakan untuk pembuatan karakter npc createbyuserid(userid string, spawninfo spawninfo, complete system action$1) buat instansi karakter zepeto dengan userid utamanya digunakan untuk pembuatan karakter npc removecharacter(character zepetocharacter) hapus instansi karakter api ini membuat instansi model karakter zepeto, tidak termasuk komponen animator controller dan character controller zepeto id ini adalah nilai id yang secara langsung ditentukan oleh pengguna dan digunakan dalam aplikasi zepeto user id ini adalah nilai id unik yang membedakan pengguna dalam sistem zepeto, dan bukan nilai yang ditampilkan di ui anda dapat memeriksanya menggunakan skrip jika anda tertarik dengan api zepetocharacter, silakan merujuk ke dokumentasi silakan merujuk ke panduan berikut \[ zepeto character controller api https //developer zepeto me/docs/character controller/ ] buat/hapus karakter import { zepetoscriptbehaviour } from 'zepeto script'; import { spawninfo, zepetocharacter, zepetocharactercreator } from 'zepeto character controller'; import { button } from 'unityengine ui'; import { gameobject, object, vector3 } from 'unityengine'; import { worldservice } from 'zepeto world'; export default class samplescript extends zepetoscriptbehaviour { public zepetoid string; public removeclonecharacterbutton button; public removeclonecharactermodelbutton button; private clonecharacter zepetocharacter; private clonecharactermodel gameobject; start() { // buat instance baru dari kelas spawninfo const firstclonespawninfo = new spawninfo(); firstclonespawninfo position = new vector3(0,0,1); const secondclonespawninfo = new spawninfo(); secondclonespawninfo position = new vector3(0,0,3); // buat `zepetocharacter` menggunakan zepetoid zepetocharactercreator createbyzepetoid(this zepetoid, firstclonespawninfo, (character zepetocharacter) => { this clonecharacter = character; }); // buat `zepetocharactermodel` menggunakan zepetoid zepetocharactercreator createmodelbyzepetoid(this zepetoid, secondclonespawninfo, (object) => { this clonecharactermodel = object; }); // buat `zepetocharacter` menggunakan userid / zepetocharactercreator createbyuserid(worldservice userid, new spawninfo(), (character zepetocharacter) => { this clonecharacter = character; }) // buat `zepetocharactermodel` menggunakan userid zepetocharactercreator createmodelbyuserid(worldservice userid, new spawninfo(), (object) => { this clonecharactermodel = object; }) / // atur event klik untuk `removeclonecharacterbutton` untuk menghapus karakter klon this removeclonecharacterbutton onclick addlistener(() => { zepetocharactercreator removecharacter(this clonecharacter); }); // atur event klik untuk `removeclonecharactermodelbutton` untuk menghancurkan model karakter klon this removeclonecharactermodelbutton onclick addlistener(() => { object destroy(this clonecharactermodel); }); } } jika anda menjalankan contoh ini, anda dapat melihat bahwa charactermodel di sebelah kiri dibuat tanpa komponen animator controller dan character controller seperti yang ditunjukkan di bawah ini kontrol karakter antarmuka di mana anda dapat langsung mengontrol karakter akan disediakan melalui skrip dari instansi karakter dalam sebuah adegan api deskripsi movetoposition(position vector3) pindahkan karakter ke posisi movecontinuously(direction vector3) gerak terus menerus (perbarui) ke arah yang dilihat karakter movecontinuously(direction vector2) gerak terus menerus (perbarui) ke arah yang dilihat karakter stopmoving() hentikan karakter dari bergerak jump() karakter melompat ke daya lompat yang ditetapkan doublejump() karakter melompat dua kali dengan daya doublejump yang saat ini ditetapkan (berlaku hanya saat menggunakan motioncontroller v2) teleport(position unityengine vector3, rotation unityengine quaternion) karakter langsung berpindah ke transform setgesture(gesture unityengine animationclip) untuk animationclip yang ditentukan, gerakan karakter diputar saat setgesture sedang berjalan, input kontrol pengguna tidak diterapkan pada karakter ketika opsi loop animationclip diaktifkan, itu akan terus diputar sampai cancelgesture() dipanggil cancelgesture() hentikan pemutaran animation clip yang sedang diputar melalui setgesture() ketika cancelgesture() dieksekusi, input kontrol pengguna diterapkan kembali pada kontrol karakter contoh kode karakter kontrol import { zepetoscriptbehaviour } from 'zepeto script' import {spawninfo, zepetocharacter, zepetocharactercreator} from "zepeto character controller"; import { worldservice } from 'zepeto world'; import {animationclip, vector3, waitforseconds } from 'unityengine'; export default class characteractionsample extends zepetoscriptbehaviour { public targetposition vector3; public dancegesture animationclip; private clonecharacter zepetocharacter; start() { // buat `zepetocharacter` menggunakan `zepetocharactercreator createbyuserid` zepetocharactercreator createbyuserid(worldservice userid, new spawninfo(), (character zepetocharacter) => { // tetapkan karakter yang dibuat ke ` clonecharacter` this clonecharacter = character; // jalankan `actioncoroutine()` sebagai coroutine this startcoroutine(this actioncoroutine()); }) } actioncoroutine() { yield new waitforseconds(3); // pindahkan ` clonecharacter` ke `targetposition` setelah menunggu 3 detik this clonecharacter movetoposition(this targetposition); yield new waitforseconds(1); // buat ` clonecharacter` melompat setelah menunggu 1 detik this clonecharacter jump(); yield new waitforseconds(1); // atur gestur ` clonecharacter` ke `dancegesture` setelah menunggu 1 detik this clonecharacter setgesture(this dancegesture); yield new waitforseconds(3); // batalkan gestur ` clonecharacter` setelah menunggu 3 detik this clonecharacter cancelgesture(); } } jika anda menjalankan contoh ini, anda dapat melihat bahwa karakter yang dikloning melakukan tindakan yang ditentukan secara berurutan sebagai berikut 📘 silakan merujuk ke panduan berikut \[ membuat sebuah npc docid 4ttzbkbku0cz c1t91xpj ] status gerakan api yang terkait dengan status gerak karakter zepeto adalah sebagai berikut api deskripsi motionstate usedoublejump = (boolean); atur apakah karakter dapat menggunakan doublejump motionstate doublejumppower = (number); atur kekuatan doublejump karakter motionstate uselandingroll = (boolean); atur apakah akan menggunakan landingroll karakter motionstate landingrollspeed = (number); atur nilai kecepatan landingroll karakter motionstate usemoveturn = (boolean); atur apakah akan menggunakan moveturn untuk karakter motionstate gravity = (number); atur nilai gravitasi karakter motionstate currentjumpstate anda dapat memeriksa status lompatan karakter saat ini \ tidak ada = 1, jumpidle = 0, jumpmove = 1, jumpdash = 2, jumpdouble = 3 motionstate currentlandingstate anda dapat memeriksa status pendaratan karakter saat ini \ tidak ada = 1, landingslight = 0, landingdeep = 1, landingroll = 2 motionstate currentmovestate anda dapat memeriksa status gerakan karakter saat ini \ tidak ada = 1, movewalk = 0, moverun = 1 contoh kode status gerakan import { zepetoscriptbehaviour } from 'zepeto script' import { custommotiondata, spawninfo, zepetocharacter, zepetocharactercreator, zepetoplayer, localplayer, zepetoplayers } from "zepeto character controller"; import { worldservice } from 'zepeto world'; import { button } from 'unityengine ui'; export default class motionsample extends zepetoscriptbehaviour { public jumpbutton button; private clonecharacter zepetocharacter; start() { zepetocharactercreator createbyuserid(worldservice userid, new spawninfo(), (character zepetocharacter) => { // menetapkan karakter yang dibuat ke ` clonecharacter` this clonecharacter = character; // mengatur berbagai properti dari `motionstate` di ` clonecharacter` this clonecharacter motionstate usedoublejump = true; this clonecharacter motionstate usedoublejump = true; this clonecharacter motionstate uselandingroll = true; this clonecharacter motionstate usemoveturn = true; this clonecharacter motionstate gravity = 1; }) this jumpbutton onclick addlistener(() => { this clonecharacter jump(); }); } update() { // periksa apakah ` clonecharacter` tidak null if (this clonecharacter != null) { // cetak status lompat saat ini dari `motionstate` di ` clonecharacter` console log(`status lompat saat ini ${this clonecharacter motionstate currentjumpstate}`); // cetak status mendarat saat ini dari `motionstate` di ` clonecharacter` console log(`status mendarat saat ini ${this clonecharacter motionstate currentlandingstate}`); // cetak status gerak saat ini dari `motionstate` di ` clonecharacter` console log(`status gerak saat ini ${this clonecharacter motionstate currentmovestate}`); } } } mengendalikan animator karakter zepeto api untuk mengendalikan animator karakter zepeto api deskripsi statemachine constraintstateanimation mulai dari versi 1 6 0 dari zepeto world, transisi animasi yang dimainkan dalam characterstatemachine dapat dihidupkan/dimatikan sesuai dengan characterstate dari motion v2 \ true matikan zepetocharacter currentstate, yang dipengaruhi oleh input pengontrol, dan kendalikan klip animasi yang diinginkan 👍 contoh penggunaan constraintstateanimation anda ingin karakter anda menggunakan animasi berenang alih alih animasi berjalan anda dapat menerapkan klip animasi berenang ke state baru dan memperbaiki state melalui constraintstateanimation jika anda ingin menggunakan animasi gestur saat menggerakkan karakter, anda dapat menerapkan klip animasi gestur ke state baru dan menggerakkan karakter dengan state yang diperbaiki menggunakan constraintstateanimation ini dapat digunakan ketika anda ingin memaksa memainkan animasi tertentu sambil sementara mengabaikan nilai parameter yang diterapkan pada animator state zepetoanimator fungsi animator unityengine tersedia dalam bentuk zepetoanimator sebagai contoh, jika anda ingin mengatur nilai integer untuk parameter "state" animator karakter tertentu, anda dapat menggunakan zepetoanimator setinteger("state", 1); untuk penggunaan yang lebih rinci, silakan merujuk ke dokumentasi animator unityengine dan skrip contoh di bawah ini 📘 unityengine animator https //docs unity3d com/scriptreference/animator html https //docs unity3d com/scriptreference/animator html contoh kode untuk mengontrol animator karakter zepeto contoh kontrol animator dari karakter zepeto pemain lokal yang dikendalikan oleh pemain import { toggle } from 'unityengine ui'; import { spawninfo, zepetocharacter, zepetoplayers } from 'zepeto character controller'; import { zepetoscriptbehaviour } from 'zepeto script' import { worldservice } from 'zepeto world'; import { animator } from "unityengine"; export default class samplescript extends zepetoscriptbehaviour { public testtogle toggle; private zepetocharacter zepetocharacter; start() { // kode pembuatan pemain lokal (silakan hapus bagian ini jika anda sudah menggunakan kode pembuatan pemain lokal di tempat lain) zepetoplayers instance createplayerwithuserid(worldservice userid, new spawninfo(), true); // kode untuk mengatur pemain lokal yang dibuat sebagai karakter zepeto zepetoplayers instance onaddedlocalplayer addlistener(() => { this zepetocharacter = zepetoplayers instance localplayer zepetoplayer character; // contoh setinteger const statetype = animator stringtohash("state"); this zepetocharacter zepetoanimator setinteger(statetype, 30); // statemachine constraintstateanimation this testtogle onvaluechanged addlistener((isactive bool)=>{ this zepetocharacter statemachine constraintstateanimation = isactive; console log(isactive); }); }); } } jika anda menjalankan contoh tersebut, anda dapat melihat bahwa ketika nilai statemachine constraintstateanimation adalah true, transisi animasi yang dimainkan di characterstatemachine adalah off jika anda mengatur nilai statemachine constraintstateanimation menjadi false, itu akan kembali ke keadaan semula mengontrol charactershadow mulai dari versi 1 11 3 dari paket zepeto charactercontroller, sebuah antarmuka telah ditambahkan untuk mengakses objek zepetocharacter shadow spesifikasi api antarmuka komponen charactershadow class charactershadow extends unityengine monobehaviour { public target unityengine transform; public autosynctransform boolean; } target mewakili objek yang berfungsi sebagai referensi untuk menyesuaikan transformasi objek charactershadow \ secara default, karakter zepeto diatur sebagai target transformasi objek charactershadow disesuaikan berdasarkan bagian bawah karakter yang ditentukan autosynctransform sebuah nilai flag yang menentukan apakah posisi bayangan harus disesuaikan \ nilai default adalah true dengan ini, anda dapat mengontrol bayangan karakter zepeto saat runtime di bawah ini adalah contoh kode yang menggunakan toggle untuk menghidupkan dan mematikan bayangan import { zepetoscriptbehaviour } from 'zepeto script' import { zepetocharacter, charactershadow, zepetoplayer, zepetoplayers } from 'zepeto character controller'; import { toggle } from 'unityengine ui'; export default class shadowcontroller extends zepetoscriptbehaviour { public shadowtoggle toggle; private charactershadow charactershadow; private localcharacter zepetocharacter; start() { zepetoplayers instance onaddedlocalplayer addlistener(() => { this localcharacter = zepetoplayers instance localplayer zepetoplayer character; this charactershadow = this localcharacter context getcomponentinchildren\<charactershadow>(); console log(this charactershadow\ autosynctransform); }); this shadowtoggle onvaluechanged addlistener((isactive bool)=>{ this charactershadow\ gameobject setactive(isactive); }); } }