CRÉEZ VOTRE MONDE
Joueurs & Personnages : Avancé
Couche de collision de la caméra
8min
aperçu zepetocamera créé par zepetoplayers peut contrôler les collisions physiques entre la caméra et les objets du jeu grâce au paramètre de collision de la caméra la collision de la caméra se produit lorsque la caméra entre en collision avec un objet dans la scène si la collision de la caméra est activée, lorsque la caméra entre en collision avec un objet, elle ne pourra pas se déplacer devant cet objet, ce qui fait que la caméra reste devant l'objet au lieu de le traverser jetons un coup d'œil aux deux exemples suivants sur l'écran de gauche, la collision de la caméra n'est pas activée, permettant à la caméra de se déplacer librement sans être affectée par les objets autour du personnage ou le sol à droite, la collision de la caméra est activée, donc la caméra ne pourra pas pénétrer dans les murs et les sols lorsqu'elle se déplace en activant la collision de la caméra, le mouvement de la caméra est physiquement affecté, ce qui signifie que les endroits que le joueur ne peut pas voir ne peuvent pas être éclairés par la caméra, permettant une représentation plus réaliste configuration de la collision de la caméra zepetoplayers 1\) vous pouvez définir quelle collision la caméra détecte par couche pour définir ou ajouter une couche utilisateur, appuyez sur le menu déroulant couche dans la fenêtre inspecteur et sélectionnez ajouter une couche les couches qu'un utilisateur peut ajouter peuvent être numérotées couche3 et couche6 ou plus couche0 2 et couche4 5 sont les couches par défaut de unity 2\) sélectionnez l'objet sur lequel vous souhaitez que la caméra applique le jugement de collision, puis sélectionnez la couche que vous avez configurée 3\) maintenant, dans la partie caméra de zepetoplayers, vous pouvez sélectionner la couche que vous souhaitez enregistrer comme collision en appuyant sur le bouton déroulant pour collision vérifiez les couches que vous avez ajoutées 4\) maintenant appuyez sur le bouton play pour exécuter le runtime et vous verrez que la caméra zepeto se déplace à travers le sol et les murs sans les traverser le définir comme un script à l'exécution vous pouvez spécifier la collision de la caméra dynamiquement à l'exécution ci dessous un script pour définir le numéro de collisionlayer enregistré comme une variable publique en tant que masque de couche à l'exécution la clé est de spécifier le masque de couche à sélectionner dans zepetoplayers instance cameradata layer cameracollisionmanager import { layermask } from 'unityengine'; import { spawninfo, zepetoplayers } from 'zepeto character controller' import { zepetoscriptbehaviour } from 'zepeto script' import { worldservice } from 'zepeto world'; export default class cameracollisionmanager extends zepetoscriptbehaviour { // déclarez un membre public pour stocker un tableau de numéros de couche de collision public collisionlayer number\[]; start() { // créer localplayer zepetoplayers instance createplayerwithuserid(worldservice userid, new spawninfo(), true); // ajoutez un écouteur d'événements pour lorsque le joueur local est ajouté à la scène zepetoplayers instance onaddedlocalplayer addlistener(() => { // définir la couche de collision de la caméra sur le nouveau masque de couche zepetoplayers instance zepetocamera collisionlayer = this setnewlayermask(); }); } // méthode pour créer et définir un nouveau layermask basé sur les couches de collision private setnewlayermask() layermask { let layermaskvalue = 0; // itérer à travers le tableau des couches de collision et mettre à jour la valeur du masque de couche this collisionlayer foreach(layernumber => { layermaskvalue |= 1 << layernumber; }); // créer un nouveau layermask et définir sa valeur sur la valeur de masque de couche calculée let newlayermask layermask = new layermask; newlayermask value = layermaskvalue; return newlayermask; } } 3\ description du script pour script un calque et l'appliquer à la caméra, nous devons utiliser un layermask le layermask aura une valeur entrée par des opérations bit à bit le layermask est représenté comme une valeur entière, où chaque bit indique si le calque est inclus ou non par exemple, si le layermask a une valeur de 5 (00000101 en binaire), nous pouvons dire que le calque 0 et le calque 2 sont inclus layermaskvalue |= cette opération bit à bit combine la valeur layermaskvalue existante et la nouvelle valeur calculée dans une opération ou si la valeur layermaskvalue existante est 00000001 en binaire, et que la nouvelle valeur calculée est 00000100, l'opération ou des deux valeurs donnera 00000101 en binaire cela garantit que les calques 0 et 2 sont inclus dans le layermask 📘 masque de calque unity https //docs unity3d com/2020 3/documentation/scriptreference/layermask html https //docs unity3d com/2020 3/documentation/scriptreference/layermask html dans le cas de enhancedcamera, le calque player n'est pas défini comme le calque de collision de la caméra pour éviter que la caméra n'intersecte le personnage