Couche de collision de la caméra
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.
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 Couche6 ~ 7 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.
- 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.
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
- 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.