たこやき部屋

SteamVRを使って、Unityでゲームを開発したい

VRボンバーマンを作りたい その11(NaviMeshで自分と敵の移動)

VRTK Ver2.2.1の記事です。
Ver3になって使い方が色々と変わっています。ついでに名前も「SteamVR Unity Toolkit」から「Virtual Reality Toolkit」へ変わっています。
使い方はこちらの記事を参照してください。
takoyakiroom.hatenablog.com(以上、2017/02/04 追記)


なんだか仕事が忙しいです、微妙に
今回はちょっとしか進んでないです、マジで
具体的には2時間くらい進みました(←どうでもいい情報)

そろそろ敵を出したいので、敵をどう動かそうが考えていたのだが、やはりNaviMeshを使うのが良さそうな雰囲気がしたので、NaviMesh試してみる。
まずはNaviMesh作ります。

今までマップはスクリプトで生成していたのだけれど、スクリプトはやめて基本となるマップは最初から配置しておくように修正。
f:id:takoyakiroom:20161029170833j:plain

んでもって、置いたオブジェクトの移動可能なところをstaticにします。
f:id:takoyakiroom:20161029170834j:plain

Window→Navigation→Bakeのタブを選んで、右下のBakeボタンを押すと
f:id:takoyakiroom:20161029170836j:plain
・・・何か妙なムラになってるけど、表示上の問題無のでOK
これでNaviMeshは完成と。

壁をちゃんと全部配置して準備完了。
f:id:takoyakiroom:20161029170841j:plain


敵を登場させる前に、自分の移動をNaviMeshを使うようにしてみましょう。
VRTKでは、テレポート移動にNaviMeshが使えるということを以前に調べていたので、前に書いた内容を見直して。フムフム
takoyakiroom.hatenablog.com

テレポートの設定の「Nav Mesh Limit Distance」に「0」以外を設定せば良いらしいので適当に値を設定。
f:id:takoyakiroom:20161029170838j:plain

試しに実行!
f:id:takoyakiroom:20161029170839j:plain
NaviMeshのあるところだけ移動できるようになったー!


そして敵を作る、取り敢えずCylinderで。
「NaviMeshAgent」にしてあげて、「Target」に設定したオブジェクトに向かって移動するスクリプトを作成。
f:id:takoyakiroom:20161029170842j:plain

using UnityEngine;
using System.Collections;

public class Enemy : MonoBehaviour {
    public GameObject target;
    NavMeshAgent NaviAgent;

    void Start () {
        NaviAgent = GetComponent<NavMeshAgent>();
    }

    void Update () {
        NaviAgent.destination = target.transform.position;
    }
}

ちゃんと動いた~~!
変な柱がこっちにやってきた~~~!!
f:id:takoyakiroom:20161029170844j:plain