CRÉEZ VOTRE MONDE
Joueurs & Personnages : Avancé
Exemple de vue latérale
5min
voici des exemples de configuration du contrôle de vue latérale étape 1 configuration de la vue de la caméra réglez la caméra sur la vue latérale (ceci est un exemple, veuillez donc modifier les paramètres de la caméra en fonction de votre projet ) à ce stade, l'étiquette de la caméra doit être définie sur maincamara étape 2 configuration de l'inputaction en définissant un nouvel inputaction qui correspond à la vue latérale, vous pouvez contrôler les mouvements du personnage via l'écran tactile sélectionnez créer > actions d'entrée et nommez le fichier actions de vue latérale déplacer type d'action passer à travers déclencheur de mouvement type d'action bouton créer une hiérarchie > créer un objet vide et le renommer en contrôleur de vue latérale à partir de l'objet sideviewcontroller, sélectionnez ajouter un composant et ajoutez l'entrée du joueur faites glisser et connectez les actions sideview que vous venez de créer à la liste des actions changez le comportement pour invoquer des événements unity étape 3 scriptage créez un script pour contrôler le personnage zepeto afin de se déplacer d'un côté à l'autre, et faites suivre la caméra, sélectionnez créer > zepeto > typescript et renommez le en contrôleur de vue latérale ajoute le script à l'objet 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; } } veuillez configurer la caméra sur l'inspecteur avant de l'exécuter