สร้างโลกของคุณเอง
ผู้เล่นและตัวละคร: ขั้นสูง
ตัวอย่างมุมมองด้านข้าง
4นาที
นี่คือตัวอย่างการตั้งค่าการควบคุมมุมมองด้านข้าง ขั้นตอนที่ 1 การตั้งค่ามุมมองกล้อง ตั้งค่ากล้องให้เป็นมุมมองด้านข้าง (นี่คือตัวอย่าง ดังนั้นโปรดปรับการตั้งค่ากล้องตามโครงการของคุณ ) ในจุดนี้ แท็กของกล้องควรตั้งค่าเป็น maincamara ขั้นตอนที่ 2 การตั้งค่า inputaction โดยการกำหนด inputaction ใหม่ที่เหมาะสมกับมุมมองด้านข้าง คุณสามารถควบคุมการเคลื่อนไหวของตัวละครผ่านหน้าจอสัมผัส เลือก สร้าง > การกระทำของ input และตั้งชื่อไฟล์ว่า sideview actions เคลื่อนที่ ประเภทการกระทำ ผ่านเข้าไป เคลื่อนที่ trigger ประเภทการกระทำ ปุ่ม สร้างลำดับชั้น > สร้างวัตถุเปล่าและเปลี่ยนชื่อเป็น sideview controller จากวัตถุ sideviewcontroller ให้เลือก เพิ่มส่วนประกอบ และเพิ่ม player input ลากและเชื่อมต่อ sideview actions ที่คุณเพิ่งสร้างไปยังรายการ actions เปลี่ยนพฤติกรรมเป็นการเรียกใช้ unity events ขั้นตอนที่ 3 การเขียนสคริปต์ สร้างสคริปต์เพื่อควบคุมตัวละคร zepeto ให้เคลื่อนที่ไปมา และให้กล้องติดตาม เลือก สร้าง > zepeto > typescript และเปลี่ยนชื่อเป็น sideview controller เพิ่มสคริปต์ไปยังวัตถุ 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; } } }); //turn off zepeto camera 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(); //left right var optmovedir = new vector3(movedir x, 0, 0); optmovedir = vector3 op multiply(optmovedir, time deltatime 80 ); this mycharacter move(camrot optmovedir); } } } } //follow zepeto character 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; } } กรุณาตั้งค่ากล้องในผู้ตรวจสอบก่อนที่จะรันมัน