C++幼女先輩

プログラミング成分多め

UNITY 2018.3 Timelineで遊ぶ。 任意のタイミングでカットインを実行させる

攻撃して敵が吹っ飛ぶようなのつくる

前回まで

UNITYちゃんをタイムラインで動かした

攻撃してみる

Unityちゃんのアニメーションを合成

まずUnityちゃんにクリップを追加します
とりあえず、移動後にWin00を再生させる
Clipを重ねると補完してくれます

f:id:murasame-labo:20190419053127p:plain

Cubeを飛ばす

上記のモーション再生時にCubeを吹っ飛ばしてみます
CubeはAnimatorがないので、Track作成時にAnimationから作れません
直接Cubeを左側の開いたスペースにドラッグすし、Add Animation Trackを選ぶのが正解です
これで、CubeのAnimationTrackが出来ました
ポジションに注意して、録画ボタンでCubeを飛ばすアニメーションを適当にいれます

f:id:murasame-labo:20190419053427p:plain

前と同じく無限クリップからAnimationClipを作成

f:id:murasame-labo:20190419053505p:plain

f:id:murasame-labo:20190419053615p:plain

箱が飛びました!

カメラをつける

同じようにCameraをAnimationTrackで制御します

f:id:murasame-labo:20190419060407p:plain

f:id:murasame-labo:20190419060422p:plain

うまく制御できてないけど動かす事はできました

任意のタイミングでのタイムライン再生

今は実行時に勝手にタイムライン再生されます
これをボタン押したときに再生させてみます

まず、PlayableDirectorの参照をとっておきます
GameObject.Findなり、Inspectorで参照設定するなり好きな方法で
そして、PlayableDirectorのPlayを呼ぶだけ。簡単

            if (Input.GetKey(KeyCode.V))
            {
                playableDirectorAttack.Play();
            }

今回はVキーに割り当てたけど、ほんとこれだけで任意に再生できます
ただし、任意の位置で前に歩いて、攻撃モーションで箱が飛ぶのでまだまだ対応が必要必要です

今後調査したい

  • Raycast等で攻撃可能かの判定
  • 攻撃対象を複数おき、動的に切り替える
  • カットシーン開始時に敵はこちらを向く
  • カットシーンがぴったり敵の前に移動するよう調整する
  • カットシーン開始時に敵はこちらを向く
  • QTE(Quick Time Event )で他のタイムラインへつなぐ
  • QTEでタイムライン内で分岐
  • AvaterMaskで合成する
  • 武器やモーションが違うカットインを分岐させる