创造你的世界
玩家及角色:进阶
侧视图示例
4分
这些是设置侧视控制的示例。 步骤 1 相机视图设置 将相机设置为侧视图。(这是一个示例,请根据您的项目修改相机设置。) 此时,相机的标签应设置为 maincamara。 步骤 2 inputaction 设置 通过定义适合侧视图的新 inputaction,您可以通过触摸屏控制角色移动。 选择创建 > 输入动作,并将文件命名为侧视动作。 移动 动作类型 通过 移动触发器 动作类型 按钮 创建层级 > 创建空对象并将其重命名为侧视控制器。 从 sideviewcontroller 对象中,选择添加组件并添加玩家输入。 拖动并连接您刚刚创建的 sideview 动作到动作列表中。 将行为更改为调用 unity 事件。 步骤 3 脚本编写 创建一个脚本来控制 zepeto 角色从一侧移动到另一侧,并让相机跟随。 选择创建 > zepeto > typescript,并将其重命名为侧视控制器。 将脚本添加到侧视控制器对象。 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; } } }); //关闭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(); //左右移动 var optmovedir = new vector3(movedir x, 0, 0); optmovedir = vector3 op multiply(optmovedir, time deltatime 80 ); this mycharacter move(camrot optmovedir); } } } } //跟随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; } } 请在运行之前在检查器上设置相机。