Apple Engine

Apple, iPhone, iOS, その周辺のことについて

iPhone と Reality Composer で始める簡単 AR その15 - トリガー 編

今回はオブジェクトの振る舞いをの起点となるトリガー(トリガ)について。

 

トリガーの種類

トリガーは5つ。
通知は RealityKit 用のため、Reality Composer だけで使用できるのは4つ。

  • タップ
  • シーン開始
  • カメラの近く
  • 衝突
  • 通知

 

タップ

アプリでの説明
「オブジェクトがタップされたときにトリガします」

「影響を受けるオブジェクト」でオブジェクトの選択が可能で、タップした際にアクション / アクションシーケンスが再生される。

 

シーン再生

アプリでの説明
「シーンが開始されたときにトリガします」

設定項目なし。
シーンが開始された際にアクション / アクションシーケンスが再生される。

 

カメラの近く

アプリでの説明
「カメラの近くにある場合にトリガします」

「影響を受けるオブジェクト」でオブジェクトの選択し、有効範囲となる距離を設定するとカメラ(端末自体)がその範囲に入るとアクション / アクションシーケンスが再生される。

 

有効範囲である距離は球形で可視化される。

 

衝突

アプリでの説明
「指定されたオブジェクトが衝突したときにトリガします」

「影響を受けるオブジェクト」と「衝突する対象」のオブジェクトを選択する。
設定したオブジェクト動作が接触するとアクション / アクションシーケンスが再生される。

「影響を受けるオブジェクト」動くものとなるダイナミックの物理設定、
「衝突する対象」で固定(スタティック)の物理設定でオブジェクトが設定される。

 

オブジェクト選択時に物理設定がされていないものはアラートで変更するか表示される。

 

通知

アプリでの説明
「Xcodeで通知トリガを定義します」

この reality ファイルをリソースとしてもつ RealityKit のアプリから、このビヘイビアを呼び出して設定しているアクション / アクションシーケンスを再生させる。

そのため、Reality Composer でのプレビューや書き出した reality ファイルのプレビューではこのビヘイビアを動作させることはできない。

 

RealityKit での呼び出し方

今後、アクションの方の通知の際にちゃんと説明するとは思うが、とりあえず流れをざつくりと。

  • トリガーの通知を選択し識別子の名を「Test」に設定
  • Reality Comopser で作成したファイルを Experience.rcpeoject として保存
  • その起点となるシーン名を Game とする
  • グローバル変数として Reality Comopser のシーンを let rootAnchor: Experience.Game! とする

この状態で設定したアクションを以下の記述で呼び出すことができる。

rootAnchor.notifications.test.post()

 

識別子はnotifications の post() の間に入りキャメルケースとなる。
「Test Notify」にすると空白は埋められ「testNotify」で呼び出すことができ、識別子はひらがな、カタカナ、漢字などの 2 バイト文字でも動く。
基本的には notifications の後にドットを打ち込んだ時点でコード補完から使えるものが表示されるので間違うことはないと思う。

 

不明点

現状、通知から動作するアクションに何らかの制限があるように思われる。

とりあえず、表示 / 非表示はちゃんと動作する模様。

 

まとめ

トリガーとして設定できるものは少ないので、かなりわかりやすいと思う。

次回はアクションについて書いていこうと思う。
機能説明だけではわかりづらいので何らかのサンプルの作成しながら見ていく。