テラシュールブログ

旧テラシュールウェアブログUnity記事。主にUnityのTipsやAR・VR、ニコニコ動画についてのメモを残します。

Navmesh

【Unity】ECSでもNavMeshを使って移動範囲を限定したい

ECSでNavMeshを使いたい 先日行われた1WeekGameJamの実況にてユニティちゃんが走り回るゲームがあり、それを見て何となくECS(SubScene)でもNavMeshによる移動制限を使用したいと思ったので、やり方を考えてみました。 考え的には大昔に書いたマップから落…

【Unity】NavMeshComponentsに2D対応ブランチが追加されていたので試してみた

NavMeshComponents NavMeshComponentsはNavMeshの機能を拡張するクラス郡です。NavMeshを動的に構築したりアセットに書き出したりといった事を非常に簡単に実現してくれます。エディターからリンクを参照される程度には重要な機能の割にパッケージ化されない…

【Unity】NavMeshのデータを実行時にロードしたい

NavMeshの地形データをランタイムにロードする NavMeshをベイクする NavMeshをロードする 補足 NavMeshの地形データをランタイムにロードする Sceneに紐付いているNavMeshではなく、動的にNavMeshの経路探索に使用するデータをロード・アンロードする方法に…

【Unity】ジョブシステム上でも動かせるNavMeshの経路計算(Experimental)

ECSのデモで使用されていた、ジョブシステムでも動かそうと思えば動かせるNavMeshのサンプルです。 ちゃんと解説しようとも思いましたが、正直使い所が思いつかないので適当になります。 NavMeshQueryを利用した経路探索 サンプルコード 大雑把な解説 感想 …

【Unity】NavMeshのRaycastを非同期で撃つ!

Unity 2018.3からNavMeshのRaycastを非同期で実行することが出来るようになったので、その方法についてです。 なおExperimentalなAPIを使用するので、今後変わるかもしれません。 NavMeshQuery経由で非同期でRaycastを実行 使ってみる 非同期で動かそう! 関…

【Unity】ECSを使用した大規模なデモプロジェクト "Unite Austin Technical Presentation"

簡単なサンプルではなく、ECSを大規模に使用した技術デモ「Unite Austin Technical Presentation」の紹介です。 Unite Austin Technical Presentation ユニットの動作や攻撃にはECSが使用されている キャラクターアニメーションは頂点シェーダー 状態の切り…

【Unity】NavMeshSurfaceを使ってゲーム再生中にNavMeshをベイクする方法

今回は動的にNavMeshをベイクするNavMeshSurfaceについてです。 動的にNavMeshをベイクする 高レベルのコンポーネントを入手する NavMeshSurfaceを利用した動的なNavMeshのベイク まずは使ってみる NavMesh Surfaceのセット NavMeshSurface.Bakeの呼出 応用 …

【Unity】"Default Playables"で、VideoPlayerやTextをタイムラインで制御したりFadeoutやTweenしたり

Timelineのサンプルが公開されました。 Default Playablesの入手 Default Playablesで出来ること VideoPlayerのTimeline制御 LightのTimeline制御 NavMesh Control TextSwitcher Transform Tween ScreenFader Time Dilation 感想 関連 Default Playablesの入…

【Unity】変化する地形で、マップから落ちないように移動させる手っ取り早い方法

学生のUnityプロジェクトでよく見るのが、主人公キャラクターが壁から落下したり、壁を貫通して移動したりする光景です。 それは「そういったゲーム」なら兎も角、RPGの移動パートのような「キャラクターを移動させる」事が目的の場合は出来れば避けて欲しい…

【Unity】NavmeshAgaentの移動がOffMeshLink上で妙に加速するのを防ぐ

OffMeshLinkは複数のNavMeshを繋ぐ上で役に立つ機能です。例えば下のようにメッシュ間に崖がある場合、その辺りを繋いでくれます。 但し、OffMeshLinkは何故か通常より高速で動作する性質があるらしく、若干気持ち悪い動きになってしまいます。 今回はその辺…

【Unity】Navmeshで障害物を避けて移動するルートを事前に取得する

今回は経路探索AI(Navmesh)のルートだけを取得してみます。 NavmeshAgentを使えば、とりあえずゴールへ至ることは出来ますが、色々と調整が出来ない所があったり、とりあえずルートを知りたいといったケースでは必要ありません。なので、パスだけを取得し…

【Unity】GameObjectのstatic設定についてのアレコレ

UnityはGameObjectにstaticのフラグを設定する事が出来ます。面倒な場合はeverything(全部)で設定してしまうのですが、これは結構意味がり、場合によってはチェックを外したほうが良い事もあります。 色々なstatic Lightmap Static Reflection Probe Stati…

【Unity】NavMeshとRigidbodyを連携して動かす

今回はNavmeshで動かすキャラクターを一時的に物理演算で動かしてみます。 UnityのNavmesh(経路探索AI)はNavmeshAgentというPhysicsとは異なった力によって動きます。その為、PhysicsとNavmeshを連携させる場合、少々面倒な事になります。 Navmeshの移動 N…

【Unity】Navmeshで離れた空間にテレポートする

今回はNavmeshでキャラクターを移動させる際、本来であればNavmesh的につながってない場所を移動させる方法についてです。 入り口と出口が直接つながっていないケース 離れた空間を繋ぐoffmesh link Offmesh Linkの移動を即座に完了させる 関連 入り口と出口…

【Unity】Navmeshで取得した経路をApplyRootMotionで移動させる手っ取り早い方法

今回はNavmeshとApplyRootMotionを組み合わせて動かす手っ取り早い方法についてです。 ApplyRootMotionとNavmesh NavmeshAgentが設定されたオブジェクトの移動を止める 終了距離が近づいてきたら、動かないアニメーションに切り替える 要するに 関連 なお、…

【Unity】目的地へ辿り着くための矢印を表示する

今回は、ゲームで道に迷った(哲学的な意味ではない)際の目安となる、目的地への道順を示す矢印の表示についてです。 ゲーム進行の矢印 方向を示す3つの方法 ゴールに至る方向だけを示すパターン 中間点で方向を示すパターン 経路を探索して方向を得るパタ…

【Unity】5.3に追加されたマルチ・シーン・エディティングで出来る事

今回はマルチシーンエディティングについてです。 マルチシーンエディティング ステージやギミック毎にシーンを分割して同時編集 ステージを複数のシーンに分割して編集・平行構築 シーン毎にUIを作成して加算読込とか管理 本番シーンに機能を移植 マルチシ…

【Unity】Navmesh(経路探索)でRaycastを行う

Raycastを使用すると送信元と送信先のオブジェクト間で障害物があるかを判断する事が出来ます。 これは例えば「銃弾が壁に接触したか判断する」「敵の視界から自身が映っていないか判定する」「地面の上に乗っているか判断する」「画面をタップした際にどの…

【Unity】Unity 4向けのステルスアクション、Stealth を Unity 5 に持ってくる

今は昔、Unity のチュートリアル界にメタルギアソリッドのオマージュ的なステルスゲームのチュートリアルがあったそうな。 メタルギアオマージュなステルスゲームのサンプル Unity Projects 01: Stealth - テラシュールブログtsubakit1.hateblo.jp このチュ…

障害物を動的に追加してルートを更新する #Unity

Navmeshで作成した移動ルートに障害物を追加し、別のルートを通るようにする方法を紹介します。この方法を使用すると、例えば下のような動きが可能になります。 通せんぼ pic.twitter.com/Y40BemdXA2 — 椿 (@tsubaki_t1) 2015, 7月 2 やり方 やり方…といって…

Unite2015で公開されたRépublique Tech Demoをチェック!Unity5向けのライティングやプロジェクト構造を読む

先日Unite2015で公開されたRépublique Tech Demoについて解析していこうと思います。 目次 目次 Républiqueとは プロジェクト/ファイル管理を読む シーン構造を読む ライティングを読む コンポーネントを読む キャラクターを動かす部分を読む 感想 (オマケ…

NPC・敵の巡廻ルートを変更する[Unity]

特定のルートを巡廻する際、ルートを変更したくなるケースが有ります。例えば「人が詰まっていて通行できない」ようなケース、「障害物が置いてあり通過出来ない」ケース、「ステージが変化し最短ルートが変更された」ケース等々です。 メッシュに移動コスト…

特定ルートを巡回したりする方法[Unity]

ゲームを作成している内に、村人や敵兵を特定のルート巡廻させたり、障害物を特定ルートで動かしたり、レーシングゲームでカートを周回させたり等々、そういったギミックを作りたくなります。 この「Unityで特定のルートを巡回する」方法は、パっと思いつく…

UnityでMMDモデルを、タップした位置まで歩かせる手軽な方法

今回は、プレイヤーが指示した方向へ向かって移動する、MMOやRTS等でよくある移動方法をMMDモデルで行う手っ取り早い方法を紹介します。 「若干自分の思ってたものと違う」と思う所があれば、パラメータやソースコードを調整して下さい。一応、ノーコーディ…

状況により移動するルートを変更する

今回はUnityの経路探索、Navmeshについてです。Navmeshについてはこちら。[Unity][Navmesh]マップから落ちないようにステージ上を歩かせる楽な方法 [Unity3D]NavMeshの使い方 その1 [Unity3D]NavMeshの使い方 その2 [Unity] Unity3.5新機能 Nav Mesh を試し…

マップから落ちないようにステージ上を歩かせる楽な方法

UnityでRPGを開発する上で、最初に当たる問題が「移動」に関する問題だ。キャラクターを動かす事は(Transformを直接変更したり、CharacterControlを使ったりRigidbodyに色々したりして)難しくはないが、「障害物に突っ込まない」とか「崖の下に落ちないよ…

無料で経路探索、A* Pathfinding Projectを試す。その3

A* Pathfinding Projectを試す。その3今回はLinkGraphについてのメモ。使ってみた感想は、作るの面倒だけど軽くて思い通りのルートを通せる。 作るの面倒だけどね。 作るの面倒だけどね。 で、使い方。 大分前回と操作が被る(というか相違点はA*の設定のみ…

無料で経路探索、A* Pathfinding Projectを試す。その2

A* Pathfinding Projectを試す。その2A* Pathfinding Projectの経路探索を実際に使ってみるメモ。 今回はGrid Graphを試す。ちなみに、機能を理解しているわけではないので何が起こるかわからない所がある系の話があるらしい。 あしからず。とりあえずマップ…

無料で経路探索、A* Pathfinding Projectを試す。その1

Unity 3.5からBetaが取れたけどNavmeshはPro版のみしか使えない。 なのでUnity Proトライアルライセンスが切れたのでNavmeshが使えなくなった。と言うことで、他の経路探索を探して試してみたメモ。今回利用するのはA* Pathfinding Project(v3.0.9)。 ライ…

NavMeshの使い方 その2

Unity3.5の新機能、「NavMesh」に挑戦するヨ! その2前回まででマップとキャラクターの下準備が出来たので、Navmeshの機能を使っていくヨ!■キャラクターの移動範囲を設定(NavmeshをBake)キャラクターの移動範囲を設定。 この範囲で設定した範囲内をキャ…