トラブルシューティング
うまくいかないことの大半は、いくつかの決まった原因のどれかです。思ったとおりに動かないときは、 このページに載っている可能性が高いので、上から順に見てください。最初の 2 項目でほとんどが片づきます。
「Preview では動くのにエディターでは動かない」
想定どおりの動作です。エディターはロジックを実行しません — script も patch も物理も タイマーも近接トリガーも動きません。シーンを描画し、編集できるようにするだけです。
これは意図的なものです。作業中にアニメーションが再生されれば操作を奪い合うことになりますし、 タイマーはプロジェクトに勝手に変更を書き込んでしまいます。挙動の確認は Preview で行います。
「script が動き出さない」
順に確認してください。
- オブジェクトが有効で、階層の上位もすべて有効になっている
- そのシーンがアクティブである — AR プロジェクトならマーカーが認識済みということ
- script コンポーネントが有効である
- エディターではなく Preview か公開版で見ている
インスペクターで script の設定を変えると script は再起動します。これがクラッシュのように 見えることがあります。
「component を変えても元に戻ってしまう」
考えられる原因は 2 つです。
States がアクティブになっている。 state を選択している間、変更はその state のなかに 保存されます。切り替えるとスナップショットが復元されます。オブジェクト本体を変えたいなら state の選択を解除してください。
毎フレームそのプロパティを書いているものがある。 タイムラインのトラック、物理ボディ、 look-at は書き続けるので上書きされます。次の項目を参照してください。
「アニメーションどうしがぶつかる」
2 つの仕組みが同じオブジェクトに書き込んでいます。タイムラインは毎フレーム書き込むので、 必ずトランジションに勝ちます。
1 オブジェクトにつき 1 つの仕組みを選んでください。タイムラインが動かしているものに トランジションが必要なら、子オブジェクトに移すか、タイムラインの中でアニメーションさせます。 → アニメーション
「script からマテリアルを変えても何も起きない」
マテリアルはスロットのリストなので、material.update({ color }) はその階層に存在しない
フィールドを書いています。スロットを書き換えてください。
material.update({
materials: [{ ...material.$data.materials[0], color: '#ff0000' }],
});
入れ子になった値すべてに同じことが言えます。update は渡したものに置き換えるので、
残したいものは自分で引き継いでください。
「オブジェクトが床をすり抜ける」「モデルが固くない」
読み込んだモデルは、collider を付けるまで衝突形状を持ちません。 付けてください。 box か capsule でほぼ間に合います。
床そのものも確認を。rigid body と collider が必要です。飾りのジオメトリだけでは何も止まらず、 すり抜けます。→ 物理
「物理オブジェクトの位置を設定しても無視される」
dynamic なボディの位置は物理が所有していて、次のステップで書き戻されます。配置には
teleport を、動かすには impulse か force を使ってください。
「スクリーンショットに UI が写らない」
カードは 3D ビューの手前に描かれるため、3D ビューのキャプチャには含まれません。UI は Preview で確認してください。
「回転の値が合わない」
画面上で目にする値 — インスペクター、patch ノードのポート — はすべて度です。 script から読み書きする値はラジアンです。境界で変換してください。
「キーを押しても何も起きない」
綴りを確認してください。トリガーは on-click、ステップは play_animation です。打ち間違いは
エラーにならず、単に一度も一致しません。
イベントがプロジェクトのキー割り当てを参照している場合は、それがまだ存在するか確認して ください。削除された割り当てへの参照は「任意のキー」に戻るのではなく、発火しなくなります。
「2 回発火する」
同じトリガーを 2 か所で処理しています — イベントと script、あるいはイベントと patch。 どちらか一方にしてください。→ イベント
「オブジェクトが遅れて出てくる」
リソースはシーンが動き始めたあとに読み込まれるため、モデル・テクスチャ・テキストは開いた 少しあとに届きます。最初のフレームから見えていてほしいものは、大きなダウンロードに依存させないか、 準備できるまでシーンを隠しておいてください。
「『アニメーション終了』イベントがない」
どの仕組みにもありません。同じ長さの待機ステップを使うか、script で自分で時間を数えてください。
「取り消したら同僚の変更まで消えた」
取り消し履歴はあなた専用で、完全に直線的です。その間に誰かが同じオブジェクトを触ったことを 知りません。共有シーンでは、巻き戻すより前に進んで直すほうが安全です。
それでも解決しないときは
どれにも当てはまらない場合、答えはたいてい リファレンス表(エンジンから生成された全設定)か、 ほかのすべての土台になっているモデルを説明した オブジェクトとシーン にあります。