CRÉEZ VOTRE MONDE
Joueurs & Personnages : Avancé
Exemple de Vue Quart
5min
les contrôles du personnage zepeto peuvent être personnalisés pour utiliser le nouveau système d'entrée de unity au lieu de v pad voici des exemples de configuration du contrôle de vue quart étape 1 paramétrage de la vue de la caméra réglez la caméra en vue quart (ceci est un exemple, veuillez modifier le paramètre de la caméra selon votre projet ) à ce stade, le tag de la caméra doit être réglé sur maincamara étape 2 paramétrage de l'inputaction en définissant un nouvel inputaction pour la vue quart, vous pouvez contrôler les mouvements du personnage via l'écran tactile sélectionnez créer > actions d'entrée et définissez le nom du fichier comme quarterviewactions déplacer type d'action passer à travers déclencheur de mouvement type d'action bouton après avoir créé hiérarchie > créer un objet vide, changez le nom du fichier en quarterviewcontroller à partir de l'objet quarterviewcontroller, sélectionnez ajouter un composant et ajoutez l'entrée du joueur faites glisser et connectez les actions de quarterview que vous venez de créer à la liste des actions changez le comportement pour invoquer des événements unity étape 3 scriptage écrivez un script qui calcule la direction du mouvement du personnage à travers l'entrée de l'écran tactile sélectionnez créer > zepeto > typescript et renommez le en contrôleur de vue quart ajoute le script à l'objet quarterview controller 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 quarterviewcontroller extends zepetoscriptbehaviour { 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; } } }); zepetoplayers instance onaddedlocalplayer addlistener(() => { zepetoplayers instance localplayer zepetocamera gameobject setactive(false); this mycharacter = zepetoplayers instance localplayer zepetoplayer character; 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, movedir y); optmovedir = vector3 op multiply(optmovedir, time deltatime 80 ); this mycharacter move(camrot optmovedir); } } } } }