UFOロデオ

彼らはあなたの牛を狙って来ているが、あなたにはいくつかの秘密の策がある。 超強力な電気ショック棒を使って、接近するUFOを撃退し、あなたの群れを救え!

uforodeo

サンプルプロジェクトで自分好みにカスタマイズしましょう。

scoresystemsampleuforodeo

Studio: Score System checkmark bullet

This project demonstrates a simple score tracking system using Niantic Studio.

View sample project
roamingentities

Studio: Roaming Entities checkmark bullet

This project showcases how to make roaming entities in Niantic Studio.

View sample project
spawningsystem

Studio: Spawning System checkmark bullet

This project demonstrates how to dynamically spawn 3D entities using a custom component in Niantic Studio.

View sample project

Behind the Build: UFO Rodeo

Written by UFO Rodeo Team

March 26, 2025


Introduction

ニューメキシコの牧場で牛を飼うジョー・ザモラ農夫は、長年空に不思議な光を目撃してきたが、今やその光が彼の牛を狙っている。 
幸いなことに、彼らのハイテクUFOは彼の国の知恵には及ばない。 

超高出力の牛追い棒を使って、牛を拉致しようとするUFOを空から撃ち落とせ! 牛をすべて失う前に、できるだけ多く取り出してください。

UFO Rodeoには、ゲームを動作させるための多くの要素が含まれています。 そのため、その仕組みを説明するために、3つの主要なサンプルプロジェクトに分解しました。 UFO Rodeoの完全版とその付属機能のコードベースを自由にクローンして、詳細を学ぶことができます。

Score Counter Sample Project

このプロジェクトでは、Niantic Studio を使用したシンプルなスコアカウンターシステムを実演しています。 以下の方法を学びます:

  • 異なるエンティティをタップした際にスコアを増減させる方法。
  • UI要素にスコアを表示し、リアルタイムで更新する。
  • スコアが変更された際にシンプルなパーティクル効果をトリガーする。

プロジェクト構造
以下の表は、主要なフォルダーとファイルの簡単な概要です:

├── assets/ // 追加のメディア資産(画像、モデルなど)
├── counter.ts // スコアカウンターコンポーネントを定義するメインスクリプト
├── cleanup.ts // イベントリスナーをクリーンアップするためのユーティリティ
└── README.md // このREADMEファイル

階層エンティティの概要

  • counter
    • コンポーネントが追加されたエンティティ。
    • インクリメントエンティティ、デクリメントエンティティ、およびUIスコアエンティティへの参照を設定します。
  • インクリメントエンティティ
    • タップされるとスコアを増加させる3Dオブジェクト(例:紫の立方体)。
  • デクリメントエンティティ
    • タップされるとスコアを減らす別の3Dオブジェクト。
  • スコアUIエンティティ
    • 現在のスコアを表示するテキストベースのUI要素または3Dテキスト。


動作原理

  • カウンター コンポーネント
    • に登録されています。 ECSは3つの重要なプロパティを参照しています:
      • タップしてスコアを増加させます。
      • タップしてスコアを低下させます。
      • 現在のスコアを表示するテキストまたはUI要素。
  • イベントリスナー
    • スクリプトは、incrementとdecrementエンティティのイベントを使用してスコアを調整します。
  • スコア更新 &
  • UI
    • スコアが変更されるたびに、スクリプトは を呼び出し、画面のテキストを更新します。
  • パーティクル効果
    • この関数は、タップされたエンティティにランダムなパーティクルバーストを生成し、追加の視覚フィードバック
    • を追加します
  • クリーンアップ
    • コンポーネントが削除された場合、メモリリークを回避するためにイベントリスナーと参照をクリアします

はじめに

  • プロジェクトのクローンまたはインポート
  • 増分と減分のジオメトリを、希望するオブジェクト/モデルに置き換えます
    • オブジェクトのモデルや名前を変更した場合、カウンターコンポーネントのUIドロップダウン内の参照を更新してください。
  • プレビュー
    • ビルドボタンをクリックし、デバイスまたはシミュレーターでテストしてください。 インクリメント/デクリメントオブジェクトをタップすると、表示されるスコアが更新され、パーティクル効果が発動します。

カスタマイズ

  • 初期スコア
    • 開始スコアを0以外に変更したい場合は、このフィールドを編集できます。
  • パーティクル効果
    • (例: , , , など) のプロパティを調整して、パーティクルの爆発の見た目と雰囲気を変更できます。
  • スコア UI スタイリング
    • 選択したタイプに応じて、Studios UI システムまたはカスタム CSS を使用してスタイルを設定できます(2D HTML オーバーレイを使用している場合)。

トラブルシューティング

  • スコアが更新されない
    • インスペクターでインクリメント、デクリメント、スコアに正しいエンティティが割り当てられていることを確認してください。
    • カウンターオブジェクトにカスタムコンポーネントとしてコンポーネントが添付されていることを確認してください。
  • パーティクル効果が表示されない
    • 関数に有効なスプライトが設定されており、エンティティがパーティクルエミッターをサポートしていることを確認してください。

 

Roaming Entities Tutorial

このプロジェクトでは、Niantic Studioを使用して移動可能な3Dオブジェクト(この場合、UFO)を作成する方法を紹介します。 以下の内容を学びます:

  • シーン内の3Dモデルにカスタムコンポーネントを割り当てる方法。
  • シンプルな状態マシンを使用して、エンティティをランダムな位置間で移動およびアニメーション化します。
  • 衝突を検出し、視覚的なフィードバックとしてパーティクル効果をトリガーします。

プロジェクト構造

├── assets/
│ └── ufo.glb // UFOの3Dモデル
├── roaming_entity.ts // roaming_entityコンポーネントを定義するメインスクリプト
├── cleanup.ts // イベントリスナーをクリーンアップするためのユーティリティ
└── README.md // このREADMEファイル


主要なファイル

  • 状態マシン(/)を備えたコンポーネントを定義し、UFOをランダムな位置に移動させます。
  • コライダー、位置、およびパーティクル効果をトリガーする衝突リスナーを設定します。
  • コンポーネントが削除された際にイベントと参照を削除するヘルパー関数(, )を提供します。

動作原理

  • Roaming Entity コンポーネント
    • に登録されています。 UFOは最初に配置され、その後シリンダーコライダーに割り当てられます。
    • 衝突リスナーがトリガーされ、一時的なパーティクルバーストが発生します。
  • ステートマシン
    • PING → PONG サイクル:
      • 各状態に入ると、UFOはランダムな位置に移動します。
      • ランダムな遅延時間が、状態が再び切り替わるまでの時間を決定し、連続した移動を実現します。
  • 衝突処理
    • が使用されます。 UFOが衝突すると、粒子が放出されます。
    • 短時間後、粒子エミッターと回転アニメーションが削除され、UFOが次の衝突のためにリセットされます。
  • クリーンアップ
    • 衝突のイベントリスナーは追跡され、メモリリークを防ぐために後で削除されます。

 

はじめに

  • このプロジェクトをクローンする
  • コンポーネントを割り当てる
    • ufosからモデル/エンティティを追加または変更した場合、各エンティティにカスタムコンポーネント 'roaming_entity.ts' を必ず添付してください。
  • アセットの確認または交換
    • 独自のモデルを使用する場合、'roaming+entity.ts' コンポーネントファイル内の 'assets/ufo.glb' の参照を置き換えてください
  • & をビルドプレビュー
    • ビルドを押してプロジェクトを実行または公開します。
    • オブジェクトがシーン内を移動し、時々衝突してパーティクル効果を生成する様子を確認してください。

カスタマイズ

  • モーション設定
    • 編集してランダムな距離を微調整したり、新しい最小/最大位置を設定します。
    • 調整して移動速度を速くしたり遅くしたりします。
  • パーティクル効果
    • で、やなどのプロパティを調整してバーストの外観を変更します。
  • 衝突形状とサイズ
    • シリンダーコライダーを他の形状に置き換える場合は、または他の形状を選択します。 オブジェクトが衝突する前に、他のオブジェクトとの間隔を広くするためにサイズを変更してください。
  • アニメーションのイージング
    • 異なる値(, , , など)を試して、オブジェクトの移動スタイルをカスタマイズしてください。

トラブルシューティング

  • 動きがない
    • インスペクターで各UFOにコンポーネントが接続されていることを確認してください。
    • 状態マシン移行(→)がトリガーされていることを確認してください(コンソールログを確認)。
  • ランダムな動きなし
    • 関数が有効な数値を返していることを確認してください。
    • ランダム範囲または最小位置を調整し、カメラの視野内に収まるようにします。

 

スポーンシステム チュートリアル

このプロジェクトでは、Niantic Studioのカスタム「スポナー」コンポーネントを使用して、3Dエンティティを動的にスポーンする方法を示します。 以下の内容を学びます:

  • 3Dモデルを複数インスタンス化してシーンに自動的に読み込み、配置する。
  • エンティティの生成設定(entityAmount、spawnSpeedなど)を構成します。
  • シンプルなECS状態マシンを使用して、アセットの読み込みとイベントの移行を協調します。

説明
Spawning System Sampleは、定期的に新しい3Dエンティティ(例:牛)を作成する「spawner」コンポーネントをデモするサンプルです。 生成された各エンティティには、モデル、基本アニメーション、コライダー、およびカメラの近くにあるランダムな位置が割り当てられます。 この設定は、Nianticのエンティティコンポーネントシステム(ECS)が複数のオブジェクトの生成と初期設定をリアルタイムで処理する方法を示しています。


プロジェクト構造
以下の表は、主要なフォルダーとファイルの簡単な概要です:
.
├── assets/ // 追加のメディア資産(cow.glbモデル)
├── spawner.ts // Spawnerコンポーネントを定義するメインスクリプト
└── README.md // このREADMEファイル


主要なファイル

  • コンポーネントを定義し、生成するエンティティの数、生成間隔、および配置方法を制御します。
  • シンプルな状態マシンを使用して、「ローディング」フェーズ(エンティティの生成)と、すべてのオブジェクトが作成された後の最終状態「done」を処理します。

階層エンティティの概要

  • スポーンシステムエンティティ
    • コンポーネントが添付されたエンティティです。
    • 生成するエンティティの数()と生成間の遅延()を構成します。
  • 生成されたエンティティ(牛)
    • スポナーのLOADING状態中に自動的に作成されます。
    • 各エンティティは次を受け取ります:
      • GltfModel(牛のモデル)。
      • ScaleAnimation(0.1から1への拡大アニメーション)。
      • Collider(円筒形)。
      • アクティブカメラの近くにあるランダムな位置。

動作原理

  • Spawner コンポーネント
    • が . に登録されています。 ECSは2つの主要なプロパティを参照しています:
      • : 生成するエンティティの数。
      • : 生成間のミリ秒間隔。
  • 状態マシン
    • LOADING (初期状態): 指定された回数まで繰り返し、指定された間隔で新しいエンティティを生成します。
    • 各生成されたエンティティは、牛のモデルをロードし、ScaleAnimationを添付し、PositionとColliderを設定します。
    • ループが終了すると、トリガーがDONE状態に移行します。
    • ランダムな
  • 位置決め
    • 各エンティティに対して、x座標(-4から4の間)がランダムに選択され、z座標はカメラの後方にオフセットされます。
    • y座標は地面からやや上方に設定されます。
  • DONE状態
    • すべてのエンティティが生成されると、「完了!」「はログに記録されます。」 この状態を使用して、追加のロジックを実行できます。例えば、スポーンの再トリガーやUI要素のトグルなどです。

はじめに

  • プロジェクトのクローンまたはインポート
    • Niantic Lightship Studioを開き、このサンプルプロジェクトをワークスペースにインポートまたはクローンします。
  • スポナー コンポーネントを割り当てる
    • シーンビューでエンティティを作成または選択し、プロジェクトの「スクリプト」パネルからコンポーネントを追加します。
  • インスペクターで設定
    • entityAmount フィールドを使用して、生成する3Dモデルの数を設定します。
    • spawnSpeed(ミリ秒単位)を調整して、各モデルの出現速度を制御します。
  • をプレビュー
    • ビルドまたはパブリッシュを押します。
    • カメラの近くで新しいエンティティ(牛)が1つずつ生成され、合計数に達するまで観察してください。

カスタマイズ

  • モデル & アニメーション
    • モデルを変更したい場合は、この部分を編集してください。 
    • アニメーションを編集するか、削除して静止画モデルにします。
  • コライダー形状
    • 異なるタイプ(例:, )を試して、衝突や物理挙動を実験してください。
  • スポーンパターン
    • のランダムオフセットを調整して、エンティティの配置を異なるパターンに広げます。
    • 実行時に変更して、よりダイナミックな体験を作成します。
  • 追加ロジック
    • DONE 状態では、追加のステップ(例: 「スポーン完了」UI の表示、特別なアニメーションのトリガー、またはスポナーの再実行)を追加できます。

トラブルシューティング

  • エンティティが表示されない
    • コンポーネントがエンティティに正しく接続されていることを確認してください。
    • ファイルがフォルダー内に存在し、パスが一致していることを確認してください。
  • 生成が速すぎたり遅すぎたりする
    • インスペクターの値を必要に応じて調整してください。
  • コライダーが機能していない
    • 新しく生成されたエンティティが有効な設定を持っていることを確認してください。

浮遊する牛を楽しんだり、Niantic Studio プロジェクトで3Dモデルを動的に生成する方法を探索してみてください!

Your cool escaped html goes here.
OSZAR »