Unity 文化祭で使ったテクニック?
どうも、ラクレットチーズを使った料理を食べてみたい夜月輝星です。
今回は文化祭で展示した作品で使用したUnityのテクニックを箇条書き形式であげていこうと思います。
したこと❶
ボール、BoxUnityちゃんなど指定した動けるオブジェクトに自分の追わせる。追わせる範囲を設定する
<方法>
①「Nav Mesh Agent」というものを追跡させたいものに追加する(これが追いかけさせるための機能)
↓
②自分のキャラの位置を設定するスクリプトをつける
↓
③NavMeshAgent.destnationで要求された目的地に最も近い有効な
NavMesh の位置にエージェントを移動させることを要求します。
↓
④Targetに追いかけさせたいものを入れる(今回は「unitychan~」)
↓
⑤追跡させたいフィールドのstaticにチェックを入れる
(追跡範囲を設定)
↓
⑥windowのNavigationをクリックし、Bakeをクリック
したこと❷
指定したオブジェクトを上下、左右に移動できるようにした(移動床の作成)
<方法>
①スクリプトを作成
x y z軸(右上図)で動けるようvector3で宣言 private Vector3 pos;
オブジェクトの位置を設定しておく void Start () {
pos = transform.position;
}
設定しておいた位置を足し引きして移動させる void Update () {
this.gameObject.transform.position = new Vector3(pos.x, pos.y + Mathf.PingPong(Time.time, 3), pos.z);
}
*今回はy軸を使って上下に動くようにしてある
*PingPong (float t, float length); で値 t を行き来させる。 t は length より大きくなることも 0 より小さくなることもない。
返される値は 0 とlengthの間を行ったり来たり移動する。
https://docs.unity3d.com/jp/current/ScriptReference/Mathf.PingPong.html 参照)
②作成したスクリプトを自分の動かしたいオブジェクトに追加する
したこと❸
指定したオブジェクトに触れたオブジェクトを指定した座標に移動できるようにした(ワープ)
<方法>
①スクリプトを作成
・他のものが衝突したら指定した座標に移動 void OnTriggerEnter(Collider other){
other.gameObject.transform.position = new Vector3(x, y, zの移動させたい座標);
}
*Colliderとは衝突判定に使用するComponent、
Rigidbody Componentと組み合わせて物理的な挙動を簡単に実現出来る。
(http://developer.wonderpla.net/entry/blog/engineer/Introduction_Unity_4/ 参照)
*OnTriggerEnterで衝突した瞬間
OnTriggerStayで衝突している間
OnTriggerExitで衝突から離れた瞬間 呼び出すことができるようになる
(http://developer.wonderpla.net/entry/blog/engineer/Introduction_Unity_4/ 参照)
②作成したスクリプトを触れたらワープさせたいオブジェクトに追加
③Box Collider内のIs Triggerにチェックを入れる
いかがだったでしょうか?この記事を見てUnityで少しでもアクションを作ってみようかなと思っていただければ幸いです。皆さん良いクリスマスを