【Unity】にゃんこをカメラの方向に向ける


ARKit床面認識した後、にゃんこを配置し、歩かせ、スマホの向きを変え、にゃんこをカメラの方向に向かせ歩かせる

環境メモ
⭐️Mac OS Mojave バージョン10.14
⭐️Xcode version 10.0(10A255)
⭐️Unity 2018.2.14f1
⭐️iPhone7 IOS11.4.1

実際に動かした動画はこちら↓↓
https://twitter.com/nonnonkapibara/status/1061943852146221056

1.Assetsストアから「Cartoon Cat」で、にゃんこの素材をダウンロードする

2.「cat_walk」を選択し「Rig」を選択「Animation Type」を「Legacy」にする。
必ず「Apply」を押して保存すること。

3.「cat_walk」を選択し「Animation」の「Wrap Mode」をLoopにする

4.下の方の「Wrap Mode」もLoopにする。
必ず「Apply」を押して保存すること。

5.「cat_walk」を「HitCubeParent」の配下にDrag&Dropで配置する

6.「cat_walk」を選択し「Rotation」を180にする。
7.Play AutomaticallyのチェックをOFFする。
8.Culling TypeをAlways Animateにする。

9.「歩く/止まる」「こっちにおいで」ボタンを作成する
10.CanvasのUI Scale Modeを「Scale With Screen Size」にする

11.「cat_Walk」を選択し「Unity AR Hit Test Example」を追加する
12.HitCubeParentにする
13.新しく「CatScript」を作る

CatScript
using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class CatScript : MonoBehaviour {

    private new Animation animation;
    private bool moveFlag = false;

    // Use this for initialization
    void Start () {
        animation = GetComponent<Animation>();
    }

    // Update is called once per frame
    void Update () {
        if (moveFlag) {
            // transform.Translatは、指定したx・y・z移動させたい距離をセットする
            // Vector3.forwardは、ワールド空間の前方
            // Time.deltaTimeには、前回のUpdate()からの経過時間
            // Catを0.5fの速さで動かす
            transform.Translate(Vector3.forward * Time.deltaTime * (transform.localScale.x * 0.05f));
        }
    }

    /*
     * 「歩く」ボタンTap時
     */
    public void onTapWalk() {
        // animation.isPlayingは、アニメーションが再生されているかどうかの判定
        if (!animation.isPlaying) {
            // 再生していない場合は、再生する
            animation.Play();
            moveFlag = true;
        } else {
            // 再生してる場合は、止める
            animation.Stop();
            moveFlag = false;
        }
    }

    /*
     * 「こっちに来る」ボタンTap時
     */
    public void onTapLookAt() {
        // Catをカメラの方向へ向かせる
        transform.LookAt(Camera.main.transform.position);
        // transform.eulerAnglesは、指定した角度まで一気に回転させる
        // eulerAnglesで回転する角度を指定する。Vector3(0, 50, 0)ならx軸で0度、y軸で50度、z軸で0度回転する。
        // Catがカメラの方向へ回転する
        transform.eulerAngles = new Vector3(0, transform.eulerAngles.y, 0);
    }
}

14.「cat_Walk」をDrag&Dropしてボタンを紐付ける

完成!