(:3[kanのメモ帳]

個人ゲーム開発者kan.kikuchiのメモ的技術ブログ。月木更新でUnity関連がメイン。

キャラクターが常に特定の位置を見るように出来るHead Look Controller【Unity】【アセット】


このエントリーをはてなブックマークに追加

この記事でのバージョン
Unity 2017.4.4f1


はじめに

今回はキャラクターが常に特定の位置を見るように出来る

Head Look Controllerというアセットの紹介です!

もちろんキャラクターがアニメーションした状態でも使えます。


f:id:kan_kikuchi:20180603185814g:plain


Unity公式のアセットで、しかも無料です!

ただ、残念ながらiOSとAndroidは非対応らしいです。(未確認)


f:id:kan_kikuchi:20180604102250j:plain


なお、本記事に出てくる女の子や家のアセットは以下のものを使っています。








導入

導入の仕方は他のアセットと同じく、Asset Storeからインポートするだけ。


f:id:kan_kikuchi:20180603173823j:plain


なお、Head Look Testというサンプルシーンもあります。


f:id:kan_kikuchi:20180603175158g:plain


使い方

次に使い方の説明です。

まず、HeadLookControllerというスクリプトをモデルにAddします。


f:id:kan_kikuchi:20180603175227j:plain


次に、HeadLookControllerに以下の画像のように(サンプルと同じ)

各Transformをアタッチ、パラメータ設定します。

なお、モデルによって微妙に名前や場所が違うかもしれません。


f:id:kan_kikuchi:20180603180312j:plain


最後にHeadLookControllerのtargetにLateUpdateで向いて欲しい位置を設定するだけです。

サンプルだとCursorHitがこれに該当するのですが、

余計なコードがあるので簡潔にまとめると以下のような感じ。

/// <summary>
/// HeadLookControllerのTargetに自分の位置を設定るクラス
/// </summary>
public class HeadLookControllerTarget : MonoBehaviour {

  //自分の位置を設定するHeadLookController
  [SerializeField]
  private List<HeadLookController> _headLookControllerList = new List<HeadLookController>();

  //Updateでアニメーションするので、その後に設定するように
  private void LateUpdate() {

    foreach (HeadLookController headLookController in _headLookControllerList) {
      //HeadLookControllerのtargetに自分の位置を設定
      headLookController.target = transform.position;
    }

  }
}


上記のHeadLookControllerTargetを作成し、向いて欲しいオブジェクト(今回はカメラ)にAddし、

HeadLookControllerをアタッチすれば準備完了。


f:id:kan_kikuchi:20180603184844j:plain


これでだけでそのオブジェクトを追うようになります。

また、HeadLookControllerをListで設定出来るようにしてるので、

複数のキャラを同時に同じ方向に向かせる事も可能です。


f:id:kan_kikuchi:20180603185814g:plain


なお、各パラメータについては以下の記事が参考になります。


HeadLookControllerのパラメーターを調べてみた


おわりに

今回紹介したHead Look Controllerは、この前の合宿で作った札束風呂VRでも使ってたりします。




キャラクターがカメラの方向、つまり自分の事を追うようにすると、

リアリティが増して、特にVRでは効果抜群な気がします……!