BUAT DUNIAMU
Pemain & Karakter: Lanjutan
Contoh Pandangan Samping
5mnt
ini adalah contoh pengaturan kontrol tampilan samping langkah 1 pengaturan tampilan kamera atur kamera ke tampilan samping (ini adalah contoh, jadi silakan modifikasi pengaturan kamera sesuai proyek anda ) pada titik ini, tag kamera harus diatur ke maincamara langkah 2 pengaturan inputaction dengan mendefinisikan inputaction baru yang sesuai dengan tampilan samping, anda dapat mengontrol gerakan karakter melalui layar sentuh pilih buat > input actions dan beri nama file tersebut aksitampilansamping gerak tipe aksi lewati pemicu gerak tipe aksi tombol buat hierarki > buat objek kosong dan ganti namanya menjadi pengontroltampilansamping dari objek pengontroltampilansamping, pilih tambah komponen dan tambahkan input pemain seret dan sambungkan tindakan sideview yang baru saja anda buat ke daftar tindakan ubah perilaku untuk memanggil acara unity langkah 3 pemrograman buat skrip untuk mengontrol karakter zepeto agar bergerak dari sisi ke sisi, dan biarkan kamera mengikuti, pilih buat > zepeto > typescript dan ganti namanya menjadi pengendali tampilan samping menambahkan skrip ke objek sideviewcontroller import {zepetoscriptbehaviour} from 'zepeto script' import {playerinput,inputaction} from "unityengine inputsystem" import {callbackcontext} from "unityengine inputsystem inputaction" import {characterstate, zepetocharacter, zepetoplayers, zepetocamera} from 'zepeto character controller' import {camera, quaternion, time, vector2, vector3, waitforendofframe} from "unityengine"; export default class sideviewcontroller extends zepetoscriptbehaviour { public customcamera camera; public cameradistance number = 10; private originspawnpoint vector3 = new vector3( 16, 5,0); private mycharacter zepetocharacter; private startpos vector2 = vector2 zero; private curpos vector2 = vector2 zero; private playerinput playerinput; private touchpositionaction inputaction; private touchtriggeraction inputaction; private istriggered boolean = false; private istouchdown boolean = false; private canmove() boolean { return this istouchdown && !this istriggered; } onenable(){ this playerinput = this gameobject getcomponent\<playerinput>(); } start() { this touchtriggeraction = this playerinput actions findaction("movetrigger"); this touchpositionaction = this playerinput actions findaction("move"); this touchtriggeraction add started((context)=>{ this istriggered = true; this istouchdown = true; }); this touchtriggeraction add canceled((context)=>{ this istriggered = false; this istouchdown = false; }); this touchpositionaction add performed((context)=>{ if(this istouchdown) { this curpos = context readvalueasobject() as vector2; if(this istriggered) { this istriggered = false; this startpos = this curpos; } } }); //matikan kamera zepeto zepetoplayers instance onaddedlocalplayer addlistener(() => { zepetoplayers instance localplayer zepetocamera gameobject setactive(false); this mycharacter = zepetoplayers instance localplayer zepetoplayer character; this customcamera transform position = this mycharacter transform position + this originspawnpoint; this startcoroutine(this inputcontrolloop()); }); } private inputcontrolloop(){ while(true) { yield new waitforendofframe(); if (this mycharacter && this canmove()) { var camrot = quaternion euler(0, camera main transform rotation eulerangles y, 0); var movedir = vector2 op subtraction(this curpos, this startpos); movedir = vector2 op division(movedir, 100); if (movedir magnitude > 0) { if(movedir magnitude > 1) movedir normalize(); //kiri kanan var optmovedir = new vector3(movedir x, 0, 0); optmovedir = vector3 op multiply(optmovedir, time deltatime 80 ); this mycharacter move(camrot optmovedir); } } } } //ikuti karakter zepeto lateupdate() { if(null == this mycharacter) { return; } let characterpos = this mycharacter transform position; //let cameraposition = new vector3(characterpos x this cameradistance, this customcamera transform position y, characterpos z); let cameraposition = new vector3(characterpos x this cameradistance, characterpos y + 1, characterpos z); this customcamera transform position = cameraposition; } } silakan atur kamera di inspector sebelum menjalankannya