Re:iN works

覚書き

Trigger Eventでつまづいたところ

 

前置き

Windows版 Unity 5.6.0f3 Personal(64bit) での発生(その他環境では未確認)

筆者はUnity初心者 & C#やJSを理解しておりません 

 

以上のことご了承いただき、生暖かい目でみてやってください

(ゆっくりがんばります)

 

はじめに

これを 自分のできるレベルで実施したかったんで、ある領域に入ったら驚いた表情をするようなこと考えた 。 

いちか様が公開いただいたアドオンで簡単にMorphやBorn の動作をランダムループや1回だけ等で動かすことができるようになりました。

ichika292.hatenablog.com

 すごく使いやすく、また内容も充実しており大変助かります

 

つまづきポイント

まずは、領域をつくって そこに入ると次の動作に移ることを考えた。

 Playmaker での Trigger Event はお勉強済 (のつもり)

www.youtube.com

だったので、これで実現できそう・・・と思ったのだけど、まずTrigger Eventがうまくいかず次の状態に遷移できない。

 チュートリアル用のシーンでは問題なくできた

 

f:id:riesenrein:20170508201504g:plain

 

けど、一から作るとうまくいかない...

 

f:id:riesenrein:20170508201543g:plain

 

 

調査

困ったときのGoogle 先生 キーワード:unity trigger でググると一発目に本家が出てくるのは、いかに充実しているか分かりますね

docs.unity3d.com

<引用>

"このメッセージはトリガー状態の Collider、その Collider が属している Rigidbody (存在する場合)、 そのトリガーに接触する Rigidbody (Rigidbody がない場合は Collider) に送信されます。"

<引用終わり>

Rigidbody ってのがキーワードっぽい。接触する相手のInspectorを見るとRigidbody が無い

f:id:riesenrein:20170508013857p:plain

もうちょっと調べてみると

Post Position 【Unity】 静止した物体同士の当たり判定の検出について

 <引用>

どちらかにRigidbodyが必ず付いていること
RigidbodyのIs Kinematic(物理挙動をさせない)にチェックが入っていること
ColliderのIs Triggerにチェックが入っていること

また、さらに以下の様な条件がある。
Rigidbodyが付いている方のオブジェクトが移動もしくは回転している(静止しているとダメ)
(ただし、起動直後のフレームだけは静止していても検出可能)

 <引用終わり>

というものらしい ... そういうものだと理解してトライすると成功

(トリガー側だけ、 もしくは衝突相手 だけ 、また両方でもOK)

 

もうちょっと突っ込んでみる

ここで、Playmakerのチュートリアル用のシーンで使われているものを見てみた

f:id:riesenrein:20170508023716p:plain

あれ? Rigidbodyがない。だけど問題なく動くことから有効/無効で確かめてると、Charactor Controller を無効にすると、Trigger がとれなくなる。

またまたGoogle先生のお時間 キーワード:unity charactor controller

docs.unity3d.com

<引用>

Character Controller は、主に Rigidbody による物理特性を使用しない、3 人称や 1 人称のプレイヤー制御に使用されます。

(中略)

プレイヤーキャラクターが物理特性の影響をうけるようにしたい場合は、Character Controllerの代わりに、Rigidbody を使用した方がよいでしょう。

<引用終わり>

 

そういうものらしい。 

Charactor Controller の場合は、トリガー範囲のほうに設定してしまうとEnter扱いになり使えないので衝突相手に設定しないといけませんでした。

 

解決まとめ

いずれか(もしくは両方)の方法で対応

  • Trigger 範囲 に Rigidbody を設定
  • 干渉相手にRigidbody or Charactor Controller を設定

Rigidbody を使うか Charactor Controller を使うかは 目的・ 用途で使い分けしていかないといけないわけですね。

MMD4MecanimからもってくるモデルにはColliderは設定されないので一工夫が必要になると思います。

* 2017.06.24 Colliderは設定可能でした (いずれ別記事で)

 

さいごに

最初に目的としていた未達成です

Enable Behaviourを使ってスクリプトの有効/無効を切り替えればいけないかなぁと思ってたのですが、ループの場合は動作/停止 を切り替えれるのですが onceの場合は有効になったときに1回だけ... という風には動かないようでした。

まだまだ勉強しなければなりません。

UnityもHoloLensでのモデル表示ぐらいしかできていないのが現状です。

最低限のチュートリアルだけを見て触っている段階ですので、もっと色々とみていかないといけないですね

 * 2017.05.10 続きました 

riesenrein.hatenablog.jp

 

* 2017.05.19 Arbor 2 でもやってみた

works.riesenrein.net