2017年1月19日木曜日

2017年あけましておめでとうゲームをつくる その7 制作過程 実装編

前回の続き

ゲーム本編はこちら

さて、キモとなる鳥の基本素材ができあがったので
プログラムに取り掛かります。

アセットは白鹿さんに任せておけば大丈夫でしょう。

まず、今回主要な実装は
・クリックした位置に移動
・クリックした鳥と差し替え
・ゴール地点をクリックしたらゲーム終了(親鳥の評価へ)

この三つに分類されます。意外とシンプル。

 では、一番ベースとなる「クリックした位置に移動」を実装していきます。
今回は、ステージに段差があったり、上れない崖があったり、建造物があったりと
単にクリックした位置に移動では、満足いく結果は得られなさそうです。

段差の多い地形


 調べると、どうやら昨今のUnityにはNavMeshという機能が搭載されているとのこと。
それを使えば、自動で経路探索をして移動までしてくれるそうな。
私が昔やってたころは自前で実装しなきゃいけなかったのが、なんとラクなことか。

 というわけで、軽く使い方を調べると公式サイト以外にも以下のサイトが。
非常にわかりやすく説明されています。ありがたい。

テラシュールブログ

使い方はそちらを見ていただくとして
今回はコリジョン用のモデルを用意しました。


コリジョン用地形

 コリジョン用モデルは、崖や海など移動できない場所を明確にしておくために用意しています。
NavMeshには移動範囲、傾斜や上れる段差など設定画面があります。
なので、元モデルを直接使ってもできなくはないのですが、これだけだと思い通りに作ることが難しかったりします。
たとえば今回だと、上層へは階段部分を使って登ってほしいので、そこのみ移動できるようコリジョンを作っています。
あと、ハイポリで作られていたりすると計算が非常に複雑になったり管理もめんどくさくなるので、コリジョンモデルは別にローポリとして用意しておいたほうがいいです。

移動範囲を設定、ベイクする画面。
今回は相手のキャラクターは動かないので、キャラクターの位置にもコリジョンを用意しておいて、すべてNavigationStatic(静的)でベイクして作っています。

 そして移動時に、アニメーションを差し替えるように実装しておけば簡単に完成です。
・・・のはずでした。

 久しぶりにUnityやらC#を触るので、色々と仕様を忘れている上に、
新機能も搭載されているので、全然スムーズに実装できませんでした。
めっちゃ初歩的で簡単なところで躓いたり・・・。
しまいには、スクリプトコンポーネントを二重に詰んでいることに気づかなかったりなど・・・。
制作序盤はお恥ずかしいトラブルが多かったです。

ちなみに、マウスの位置に移動はこのサイトを参考にしました。
agentに対して移動地点を指示するだけ。です。

 次は クリックした鳥と差し替え です。

0 件のコメント:

コメントを投稿