Rodéo OVNI
Ils viennent chercher vos vaches, mais vous avez plus d'un tour dans votre sac. Utilisez votre aiguillon électrique surpuissant pour neutraliser les ovnis qui approchent et sauver votre troupeau.

Personnalisez-le grâce aux exemples de projets

Studio: Score System
This project demonstrates a simple score tracking system using Niantic Studio.
View sample project
Studio: Roaming Entities
This project showcases how to make roaming entities in Niantic Studio.
View sample project
Studio: Spawning System
This project demonstrates how to dynamically spawn 3D entities using a custom component in Niantic Studio.
View sample projectBehind the Build: UFO Rodeo

Written by UFO Rodeo Team
March 26, 2025
Introduction
L'éleveur Joe Zamora observe depuis longtemps d'étranges lumières dans le ciel au-dessus de son ranch du Nouveau-Mexique, mais aujourd'hui, elles s'en prennent à ses vaches.
Heureusement, leurs ovnis high-tech ne font pas le poids face à l'ingéniosité de son pays.
Utilisez votre aiguillon électrique surpuissant pour faire exploser les ovnis qui tentent de téléporter votre bétail. Éliminez-en autant que possible avant de perdre toutes vos vaches.
UFO Rodeo comporte de nombreux éléments qui le font fonctionner. Nous l'avons donc divisé en trois exemples principaux afin d'illustrer son fonctionnement. N'hésitez pas à cloner le code source complet de UFO Rodeo et de ses fonctionnalités pour en savoir plus.
Score Counter Sample Project
Ce projet présente un système simple de compteur de score utilisant Niantic Studio. Vous apprendrez comment :
- Incrémenter ou décrémenter un score lorsque vous appuyez sur différentes entités.
- Afficher et mettre à jour le score sur un élément de l'interface utilisateur en temps réel.
- Déclencher des effets de particules simples lorsque le score change.
de la structure du projet Vous trouverez ci-dessous un bref aperçu des dossiers et fichiers clés :
├── assets/ // Ressources multimédias supplémentaires (images, modèles, etc.)
├── counter.ts // Script principal définissant le composant Score Counter
├── cleanup.ts // Utilitaire pour nettoyer les écouteurs d'événements
└── README.md // Ce fichier README
Aperçu de la hiérarchie des entités
- counter
- Entité à laquelle le composant est ajouté.
- Configure les références à l'entité d'incrémentation, à l'entité de décrémentation et à l'entité de score de l'interface utilisateur.
- Entité d'incrémentation
- Objet 3D (par exemple, le cube violet) qui incrémente le score lorsqu'on appuie dessus.
-
d'entité de décrémentation
- Un autre objet 3D qui diminue le score lorsque vous appuyez dessus.
-
d'entité d'interface utilisateur de score
- Élément d'interface utilisateur textuel ou texte 3D qui affiche le score actuel.
Fonctionnement
-
- du composant Counter Enregistré dans . L'ECS fait référence à trois propriétés essentielles : l'
- exploitée pour augmenter le score.
- Appuyez dessus pour diminuer le score.
- le texte ou l'élément de l'interface utilisateur affichant le score actuel.
- du composant Counter Enregistré dans . L'ECS fait référence à trois propriétés essentielles : l'
-
- Écoute
- urs d'événements
- Le script utilise les événements sur les entités d'incrémentation et de décrémentation pour ajuster le score.
- Mises à jour
- du score
- &
- UI
-
- Chaque fois que le score change, le script appelle , qui met à jour le texte à l'écran.
- Effets
- de particules
- La fonction génère une explosion de particules aléatoire sur l'entité qui a été tapée,
-
- ajoutant
-
- un élément visuel supplémentaire.
-
- Nettoyage
- Lorsque le composant est supprimé, assurez-vous que les écouteurs d'événements et les références sont effacés pour éviter les fuites de mémoire
-
- .
-
Pour commencer
- Cloner ou importer ce projet
- Clone ce projet exemple dans ton espace de travail à partir de cette page : https://www.8thwall.com/uforodeo/score-system
- Remplace les géométries d'incrémentation et de décrémentation par les objets/modèles souhaités
- Si tu modifies les modèles ou les noms des objets, veille à mettre à jour leurs références dans les menus déroulants de l'interface utilisateur des composants du compteur.
- A
-
- perçu de
l'
- Cliquez sur le bouton Build et testez sur votre appareil ou à l'aide du simulateur. Appuyer sur les objets d'incrémentation/décrémentation devrait mettre à jour le score affiché et déclencher des effets de particules.
Personnalisation
- Score initial
- Vous pouvez modifier le champ si vous souhaitez un score de départ différent de zéro.
- Effets de particules
- Ajustez les propriétés dans (par exemple, , , , etc.) pour modifier l'apparence et le comportement de l'explosion de particules.
- Style de l'interface utilisateur du score
- Selon le type choisi, vous pouvez le styliser via le système d'interface utilisateur Studios ou un CSS personnalisé si vous utilisez une superposition HTML 2D.
Dépannage
- Le score ne se met pas à jour
- Assurez-vous d'avoir attribué les entités correctes dans l'Inspecteur pour l'incrémentation, la décrémentation et le score.
- Vérifiez que le composant est bien associé à votre objet compteur en tant que composant personnalisé.
- Aucun effet de particule
- Vérifiez que la fonction dispose d'un sprite valide et que l'entité prend en charge un émetteur de particules.
Roaming Entities Tutorial
Ce projet montre comment créer des entités 3D itinérantes (dans ce cas, des ovnis) à l'aide de Niantic Studio. Vous apprendrez comment :
- Attribuer un composant personnalisé aux modèles 3D de votre scène.
- Déplacer et animer des entités entre des positions aléatoires à l'aide d'une machine à états simple.
- Détecter les collisions et déclencher des effets de particules pour un retour visuel.
Structure du projet
├── assets/│ └── ufo.glb // Modèle 3D de l'OVNI
├── roaming_entity.ts // Script principal définissant le composant roaming_entity
├── cleanup.ts // Utilitaire pour nettoyer les écouteurs d'événements
└── README.md // Ce fichier README
Fichiers clés
- Définit un composant avec une machine à états (/) pour déplacer l'OVNI vers des positions aléatoires.
- Configure les colliders, les positions et les écouteurs de collision qui déclenchent des effets de particules.
- Fournit des fonctions d'aide (, ) pour supprimer les événements et les références lorsqu'un composant est supprimé.
Fonctionnement
- Composant d'entité itinérante
- Enregistré dans. L'OVNI est initialement placé à l'emplacement , puis assigné à un collisionneur cylindrique.
- Un écouteur de collision se déclenche, générant une brève explosion de particules.
- Machine à états
- Cycle PING → PONG :
- À chaque entrée dans un état, l'OVNI passe à une nouvelle position aléatoire via.
- Un délai aléatoire détermine le temps avant le prochain changement d'état, créant ainsi un déplacement continu.
- Cycle PING → PONG :
- Gestion des collisions
- est utilisé. Lorsque l'OVNI entre en collision, des particules sont émises.
- Après un court instant, l'émetteur de particules et une animation de rotation sont supprimés, réinitialisant l'OVNI pour sa prochaine collision.
- Nettoyage
- Les écouteurs d'événements pour la collision sont suivis et supprimés ultérieurement afin d'éviter les fuites de mémoire, à l'aide de et.
Pour commencer
- Cloner ce projet
- Clonez cet exemple de projet dans votre espace de travail à partir de cette page : https://www.8thwall.com/uforodeo/roaming-entities
- Assigner le composant
- Si vous ajoutez ou modifiez des modèles/entités à partir des ufos, veillez à associer le composant personnalisé « roaming_entity.ts » à chacun d'entre eux.
- Vérifiez ou échangez les ressources
- Si vous utilisez votre propre modèle, veillez à remplacer la référence « assets/ufo.glb » dans le fichier de composant « roaming+entity.ts ».
- Compilez & Aperçu
- Appuyez sur Build pour exécuter ou publier le projet.
- Observez vos objets se déplacer dans la scène, entrer parfois en collision et générer des effets de particules.
Personnalisation
- Paramètres de mouvement
- Modifiez pour affiner les distances aléatoires ou définir de nouvelles positions minimales/maximales.
- Ajustez pour accélérer ou ralentir le déplacement.
- Effets de particules
- Dans , modifiez les propriétés telles que , , et pour modifier l'apparence de l'explosion.
- Forme et taille de la collision
- Remplacez le collider Cylinder par ou une autre forme si vous préférez. Modifiez la taille pour donner plus d'espace à vos objets avant qu'ils n'entrent en collision avec d'autres objets.
- Animation Easing
- Essayez différentes valeurs (, , , etc.) pour personnaliser le style de mouvement des objets .
Dépannage
- Aucun mouvement
- Assurez-vous que le composant est bien attaché à chaque OVNI dans l'Inspecteur.
- Vérifiez que les transitions de l'état machine ( → ) sont bien déclenchées (vérifiez les journaux de la console).
- Pas de mouvement aléatoire
- Vérifiez que la fonction renvoie des nombres valides.
- Ajustez la plage aléatoire ou les positions minimales afin qu'elles restent dans le champ de la caméra.
du tutoriel sur le système de génération
Ce projet montre comment générer dynamiquement des entités 3D à l'aide d'un composant « générateur » personnalisé dans Niantic Studio. Vous apprendrez comment :- Charger et placer automatiquement plusieurs instances d'un modèle 3D dans la scène.
- Configurer les paramètres d'apparition tels que entityAmount et spawnSpeed.
- Utiliser des machines à états ECS simples pour coordonner le chargement des ressources et les transitions d'événements.
Description
L'exemple Spawning System présente un composant « spawner » qui crée périodiquement de nouvelles entités 3D (par exemple, des vaches). Chaque entité générée se voit attribuer un modèle, une animation de base, un collider et une position aléatoire près de la caméra. Cette configuration montre comment le système de composants d'entités (ECS) de Niantic peut gérer la création et la configuration initiale de plusieurs objets à la volée.
Structure du projet
Vous trouverez ci-dessous un bref aperçu des dossiers et fichiers clés :
.
├── assets/ // Ressources multimédias supplémentaires (le modèle cow.glb)
├── spawner.ts // Script principal définissant le composant Spawner
└── README.md // Ce fichier README
Fichiers clés
- Définit le composant qui contrôle le nombre d'entités à générer, l'intervalle entre les générations et leur positionnement.
- Utilise une machine à états simple pour gérer la phase de « chargement » (génération des entités) et un état final « terminé » une fois que tous les objets ont été créés.
Présentation des entités de hiérarchie
- Entité du système de génération
- Entité à laquelle le composant est associé.
- Configure les références pour le nombre d'entités à générer () et le délai entre les générations ().
- Entités générées (vaches)
- Créées automatiquement pendant l'état LOADING du générateur.
- Chacune reçoit :
- GltfModel (le modèle de vache).
- ScaleAnimation (mise à l'échelle de 0,1 à 1).
- Collider (forme cylindrique).
- Une position aléatoire près de la caméra active.
Fonctionnement
- Composant Spawner
- Enregistré dans . L'ECS fait référence à deux propriétés clés :
- : nombre d'entités à générer.
- : Millisecondes entre les apparitions.
- Enregistré dans . L'ECS fait référence à deux propriétés clés :
-
de la machine à états
- LOADING (initial) : itère jusqu'à, créant une nouvelle entité à intervalles réguliers.
- Chaque entité générée charge un modèle de vache, attache une ScaleAnimation et définit sa position et son collider.
- Une fois la boucle terminée, un déclencheur passe à l'état DONE.
-
- Positionnement
-
- aléatoire
-
-
Pour
- chaque entité, une coordonnée x aléatoire (entre -4 et 4) est choisie, tandis que la position z est décalée derrière la caméra. La
- coordonnée y est légèrement au-dessus du sol.
- État DONE
- Une fois toutes les entités générées, « tout est terminé !» est enregistré. Vous pouvez utiliser cet état pour exécuter une logique supplémentaire, telle que le redéclenchement des apparitions ou l'activation/désactivation d'éléments de l'interface utilisateur.
Pour commencer
- Cloner ou importer ce projet
- Ouvrez Niantic Lightship Studio et importez ou clonez cet exemple de projet dans votre espace de travail.
- Attribuez le composant Spawner
- Dans la vue Scène, créez/sélectionnez une entité et ajoutez le composant à partir du panneau Scripts de votre projet.
- Configurez dans l'inspecteur
- Utilisez le champ entityAmount pour définir le nombre de modèles 3D que vous souhaitez générer.
- Ajustez la vitesse d'apparition (en millisecondes) pour contrôler la vitesse à laquelle chaque modèle apparaît.
- Aperçu
- Appuyez sur Build ou Publish.
- Observez les nouvelles entités (vaches) apparaître près de votre caméra, une par une, jusqu'à ce que le total soit atteint.
Personnalisation
- Modèle & Animation
- Modifiez le paramètre si vous souhaitez un modèle différent.
- Modifiez l'animation ou supprimez-la pour obtenir un modèle statique.
- Forme du collider
- Essayez différents types (par exemple, , ) pour tester les collisions ou le comportement physique.
- Spawn Pattern
- Ajustez les décalages aléatoires dans pour répartir les entités différemment.
- Modifiez ou lors de l'exécution pour créer des expériences plus dynamiques.
-
de logique supplémentaire
- Dans l'état DONE, vous pouvez ajouter des étapes supplémentaires (par exemple, afficher une interface utilisateur « spawn complet », déclencher une animation spéciale ou relancer le générateur).
Dépannage
- Entités qui n'apparaissent pas
- Assurez-vous que l'élément est correctement associé à une entité avec le composant.
- Vérifiez que le fichier est présent dans le dossier et que le chemin d'accès correspond.
- Génération trop rapide ou trop lente
- Ajustez la valeur dans l'inspecteur en fonction de vos besoins.
- Colliders ne fonctionnant pas
- Assurez-vous que les entités nouvellement générées ont des paramètres valides.
Profitez des vaches flottantes et découvrez comment générer dynamiquement des modèles 3D dans vos projets Niantic Studio !