Unity

【Unity】E-moteキャラをクリックさせる

Unity

そう、たかが見えないボタンを設置すれば、動作制御とかできるんじゃないのか?そう思ってました。

でもできなかった。
冷静に考えたら、ボタンの下にE-moteを設置するようにしてなかったというのが原因かもしれません。

というわけで、再挑戦!ダメだったらしばらく触らん。

プレハブ化してなければできるんだけど、E-moteだとプレハブ化してやれって書いてある関係で、どうしてもボタンとE-moteの配置が逆になっていることからうまく作れませんでした。

単純にUnity上で設置して、ボタンの下にE-moteを設置してタイムラインを動作させるにすると、クリック判定の部分を押すと動作します。
プレハブ化してると動作しない。単純にボタンの配置がE-moteの下になっていることから逆にできないことには動作しないんでしょう。

で、結果的にいじってたらどうにか動くようになりました。
メモがてら、E-moteの場合で自分が動いたケースでの内容です。

まず、ボタンクリックでやった場合においての、各配置ですね。


実際は一ついらないのでこっちが正解。
さらに言うと、ループ処理されてるタイムラインと相性が悪く、自動で解除されないので非ループのタイムラインで対応した方が間違いないです。ループ処理だと解除されない、モーションが入力されたままです。


Button側で処理を一括にすると、クリックした瞬間にスロット6のモーションが解除されるので動かず、Event Triggerにクリックが離れた直後でスロット6Index(本当にこれでいいのか使い方分かってない)にすると非ループのタイムラインなら、動作終了後に戻ります。

きれいに戻るようにするなら、戻りのタイムラインも設定しておくときれいに戻ってくれます。
設定してないとカクッと動いて戻ります。

ヒエラルキー側の配置はこうで、基本的にタイトル画面で表示してるので非アクティブです。
ボタン自体不透明なので使わないものとかは適当。


さらに、プレハブ化してあるE-moteの元の方の配置の仕方。
これが一番苦戦しました。まず、Buttonが配置の上に来ないので、どうしたものかと思って苦肉の策でButtonをターゲットグラフィックスにしてから指定先で最初に上げた処理を組みました。

ヒエラルキーはこうなってます。
プレハブ化してなければButtonが上に来ますが、プレハブ化の関係でこうなってしまいます。


Buttonの配置は基本は最初に上げたものとやり方は同じになる。
違いとしてはターゲットグラフィックスにボタンを指定するわけです。これをやらないと動作しない。通常なら、部分的の配置がE-moteの上だったらターゲットグラフィックスはE-moteになります。

AIに聞いたりしてスクリプトいじってましたが、どうにもこうにもE-moteの方では処理を待つ記述がないことから動いてくれなかったので、この形で対応しました。

一応、こうすればポイントで箱型クリック判定になるでしょうが、クリックする側によっては動作が異なるような動きも出せるかもしれません。


動画で実際の挙動を撮影しました。
モザイクがないから部分的に雑にモザイク。


動くようにはなったので、なんかやれそう。

実際に、シーンのE-moteでは顔の左右と胸でクリック判定を用意し、顔の左右で動きが異なるようにタイムラインを用意しました。
どういう影響が出るか分からないけど、連打しても動いてましたね。

宴側の制御ではなくてUnity側でやれてるので、あとはUIと干渉しないか確認したうえでの実装でしょうか。
今の時点では、クリック判定がメッセージウィンドウにかかってようがクリック判定が優先されるのでそこだと文字送りしないということ。

最悪はマウスホイールを下に下げれば文字送りするけど、それはそれでどうなんだ?



ここまでやるのに3日もかかった。
不慣れだと本当に辛い。ティラノスクリプトを思い出しましたね、相当苦労したけど、ある時から自分で構築できるようになった。Unityで、それが出来るようになる自信はまるでありませんが。

コメント