Dépannage
Quelque chose ne fonctionne pas ? Trouvez votre problème ci-dessous. Commencez par les deux premiers : ils expliquent la plupart des cas.
Ça marche dans Preview mais pas dans l'éditeur
C'est normal. L'éditeur n'exécute pas votre logique : les scripts, les patchs, la physique, les minuteurs et les déclencheurs de proximité sont tous à l'arrêt. L'éditeur se contente d'afficher et de modifier votre scène.
C'est voulu. Une animation qui tournerait pendant l'édition vous gênerait, et un minuteur modifierait votre projet. Ouvrez Preview pour voir votre projet en action.
Mon script ne s'exécute pas
Vérifiez ces points dans l'ordre :
- L'objet est activé, ainsi que tous les objets au-dessus de lui dans la hiérarchie.
- Sa scène est active. Dans une scène AR, cela veut dire que le marqueur a été détecté.
- Le composant de script est activé.
- Vous êtes dans Preview ou dans un projet publié, pas dans l'éditeur.
Un script redémarre quand vous modifiez l'une de ses propriétés dans l'inspecteur. Une modification faite par erreur peut donc ressembler à un plantage.
Ma modification revient en arrière
Il y a deux causes fréquentes :
- Un état est actif. Tant qu'un état est sélectionné, vos modifications de cet objet sont enregistrées dans l'état. Quand vous changez d'état, les valeurs enregistrées reviennent. Pour modifier l'objet lui-même, désélectionnez d'abord l'état.
- Autre chose écrit cette valeur à chaque image. Une barre de timeline, un corps physique ou un composant Look At écrivent sans cesse dans l'objet et écrasent votre modification. Voir la section suivante.
Deux animations se contredisent
Deux éléments modifient le même objet. La timeline écrit à chaque image : elle l'emporte donc toujours sur une transition.
Utilisez-en une seule par objet. Si vous avez besoin d'une transition sur un élément contrôlé par la timeline, placez la transition sur un objet enfant, ou animez-la plutôt sur la timeline. Voir Animation.
Modifier un matériau depuis un script ne fait rien
Un matériau est une liste d'emplacements (slots) : material.update({ color }) écrit donc un
champ qui n'existe pas à ce niveau. Modifiez plutôt l'emplacement :
material.update({
materials: [{ ...material.$data.materials[0], color: '#ff0000' }],
});
C'est pareil pour toute valeur imbriquée : update remplace ce que vous lui passez, alors recopiez
les valeurs que vous voulez garder.
Mon objet traverse le sol
Un modèle 3D importé n'est pas solide tant que vous ne lui ajoutez pas de collider. Ajoutez-en un — une boîte ou une capsule convient généralement.
Vérifiez aussi que le sol a un corps rigide et un collider. Sans eux, une géométrie n'est qu'un décor, et les objets passent au travers. Voir Physique.
Un objet physique ignore la position que je lui donne
La physique contrôle la position d'un corps dynamique et la redéfinit à chaque pas de simulation.
Pour placer l'objet, utilisez teleport. Pour le déplacer, utilisez des impulsions ou des forces.
Mon interface n'apparaît pas sur une capture d'écran
Les cartes sont dessinées devant la vue 3D, et une capture de la vue 3D ne les inclut pas. Vérifiez votre interface dans Preview.
Les valeurs de rotation ne correspondent pas
Tout ce que vous voyez — l'inspecteur, les ports des nœuds de patch — affiche des degrés. Les scripts lisent et écrivent des radians. Convertissez la valeur quand vous la faites passer de l'un à l'autre.
Rien ne se passe quand j'appuie sur la touche
Vérifiez l'orthographe du nom : les déclencheurs utilisent des tirets (on-click), les étapes des
tirets bas (play_animation). Un nom mal orthographié n'affiche aucune erreur. Il ne correspond
simplement jamais à rien.
Si l'événement utilise un raccourci défini au niveau du projet (project binding), vérifiez que ce raccourci existe toujours. Quand un raccourci est supprimé, l'événement cesse de se déclencher. Il ne se rabat pas sur « n'importe quelle touche ».
Ça se déclenche deux fois
Le même déclencheur est traité à deux endroits : un événement et un script, ou un événement et un patch. N'en gardez qu'un. Voir Événements.
Un objet apparaît avec un léger retard
Les ressources se chargent alors que la scène tourne déjà : les modèles, les textures et les textes peuvent donc arriver un instant après l'ouverture de la scène. Pour un contenu qui doit être là dès la première image, évitez les gros téléchargements, ou gardez la scène masquée jusqu'à ce qu'elle soit prête.
Il n'y a pas d'événement « animation terminée »
Aucun des outils d'animation n'en propose. Utilisez une étape d'attente de la même durée, ou suivez le temps écoulé dans un script.
Mon annulation a supprimé la modification de quelqu'un d'autre
Votre historique d'annulation vous est propre, et il remonte strictement dans l'ordre. Il ne sait pas qu'un collaborateur a modifié le même objet entre-temps. Dans une scène partagée, corrigez une erreur par une nouvelle modification plutôt qu'en annulant jusqu'à elle.
Toujours bloqué ?
Ces deux pages ont le plus de chances de contenir votre réponse :
- Référence — chaque réglage, toujours à jour.
- Objets et scènes — comment un projet est assemblé. Le reste de cette section s'appuie dessus.