こっち向いて機能の実装
2014-11-02

今回はUnityでカメラの方向に向いてもらう方法をまとめました。
体全体ではなくて、キャラの顔だけこっちに向いてもらう方法です。
3Dゲームとかで、プレイヤーが近づくとNPCキャラがこっちを向く…というのを
よく見かけますが、それをUnityで出来るようにしたかったのです。
頭を回転させるわけですから、最初RotationとかQuaternionとかで回転させたのですが、
これだと頭があさっての方向に向いてしまうことに…
なかなかうまくいかなかったんですが、こちらのサイトの記事で解決策が見えました!
Unityでキャラクターに見つめてもらう - 銀の弾丸、はじめました
キャラを向かせるための専用アセットがあったんですね。
ってことでさっそく『HeadLookController』をインポート

シーンを開くと胴長短足のおっさんが出てきまして、
ボールを動かすと、その方向に視線を向けます。
このスクリプトをいじっていきます。

UnityChanモデルにHead Look Controllerスクリプトをつけました。
Element0 の First Transform、Last Transformにはモデルの胴体のボーン
Element1 の First Transform、Last Transformには首と頭のボーン
あと、Non Affected Jointsには、左手、右手のボーンを割り当てるっぽい?

どの部分がどういう名前か、とかはモデルをMecanimで開けばわかるっぽい

カメラにCursor Hitスクリプトをつけて Head Lookの部分にターゲットになるモデルを設定

出来た! …はずなんですが、キャラの視線が微妙にカメラからずれてます。
なので、カメラの子オブジェクトでCubeなどを作り、位置調整してそちらにCursor Hitスクリプトを置きます。

カメラではなく、(見えない)Cubeのほうに向くようになりました。

とりあえずこれで実装は完了しました。
いやー ここまで来るのに時間がかかったこと…
こんなアセットがあるって知ってたら、もっと早く出来たんですが…
【追記】
さらにわかりやすく解説されている動画を見つけました。
モデルに近づくと視線を向けるやり方などがこれで実装できました。
(ニコニコ動画)
複数キャラで視線を向ける方法にも対応していました。
これは便利ですね
これで複数のキャラがこっちを向いてくれるようになりました。

スポンサーサイト
タグ :