2018年1月18日木曜日

Unity : エキストラを動かす(一人)

Unityで自分以外のエキストラを自動で動かします。

(1) Assetのインポート
3Dプロジェクトを作成し、次の2つのAssetをインポートします。
・Avatars Game Animation (エキストラとして利用)
・Locomotion System (エキストラの動作)
・DoTween (エキストラの移動)
 
(2) 地面の設定(Terrain)
Game Object -> 3D Object -> Terrain

座標を変えておきます。
Assets -> import Package -> Environment
TerrainにTextureをつけておきます。

(3)エキストラの設置
一人原点あたりにおいてみます。さらにAnimator Controllerを作成します。ここではB12Controllerとしています。
Animatorタブを開いて、状態をIdleとWalkを追加します。
IdleのMotionを追加します。
Locomotion Systemのものを選択します。
この時、Foot IKにチェックを入れておくと地面にめり込んでいったりしなくなります。同じようにWalkも設定しておきます。
ここまでの設定はその場での動きとするので(移動はDoTween)、Apply Root Motionのチェックは外しておきます。





(3) DoTweenで移動設定
DoTweenでデフォルトであるSequenceを使っていきます。
今回はTerrainにスクリプトを追加します。

using UnityEngine;
using System.Collections;
using DG.Tweening;
public class Sequences : MonoBehaviour
{
public Transform target;
void Start()
{
Vector3 position = target.position;
Sequence mySequence = DOTween.Sequence();
mySequence.Append(target.DORotate(new Vector3(0, 270, 0), 1));
mySequence.Append(target.DOMove(new Vector3(-10, 0, 0), 10));
mySequence.Append(target.DORotate(new Vector3(0, 180, 0), 1));
mySequence.Append(target.DOMove(new Vector3(-10, 0, -20), 10));
mySequence.Append(target.DORotate(new Vector3(0, 90, 0), 1));
mySequence.Append(target.DOMove(new Vector3(10, 0, -20), 10));
mySequence.Append(target.DORotate(new Vector3(0, 0, 0), 1));
mySequence.Append(target.DOMove(new Vector3(10, 0, 0), 10));
mySequence.Append(target.DORotate(new Vector3(0, 270, 0), 1));
mySequence.Append(target.DOMove(position, 10));
mySequence.SetLoops(4, LoopType.Restart);
}
}

現在位置から周りを回るようにルートを組みます。



 参考
http://hiyotama.hatenablog.com/entry/2015/06/27/090000

0 件のコメント:

コメントを投稿