読者です 読者をやめる 読者になる 読者になる

あさちゅんのゲームブログ

UnityやSiv3Dに関するゲーム開発メモを残していきます

『green』で使用したテクニック

Unity 3D ナビメッシュ Navigation uGUI コルーチン C# 機能紹介

去年から製作していた3Dアクションゲーム『green』がついに今年完成しました!

ってことで振り返りの意味を込めて、greenで使用したテクニックをまとめたいと思います。

3Dモデル

キャラクターのモデルはすべてFBXファイルです。Blenderでつけたアニメーションをルートアニメーションにして使用しています。

走るなどの動作はその場で走る動作をプログラムで動かし、攻撃モーションの踏み込みはアニメーションに埋め込んでします。

ナビメッシュ

全キャラクターの移動にはナビゲーションを使用しています。

Unityで簡単に使える経路探索

本来ならAIのキャラクターの移動に使用するのですが、NavMeshAgentのMoveメソッドを使用することで、NavMesh上を自由に移動させることができます。NavMeshAgentを使用することによって、キャラクターの移動はNavMesh上に制限されるので例えば崖際の細い道などプレイヤーの些細な操作で落ちてほしくないところで便利です。

しかし、このままだと降りることもままならないのでジャンプする時は一時的にNavMeshAgentを無効にしてNavMeshから引き剥がします。

自然に落ちたい崖には実際よりも多めにNavMeshを張り、空中になった瞬間にNavMeshAgentを無効にすることで、かなり自然に落ちることができます。

uGUI

UIは全てuGUIを使用しています。デフォルトのままでもそこそこ違和感のないUIになりますが、NavigationクラスのselectOnLeft等のプロパティをいじることによって自然なUIになるようにしています。

カーソルが乗った時の挙動はOnSelectメソッド、離れた時に挙動はOnDeselectメソッドで設定できます。

コルーチン

各章の開始時の演出は全て一つのコルーチンで管理しています。スクリプトの方がややこしいことになってしまいますが、これにより新規にアニメーションを作る必要がなくなったり、プレイヤーの設定によって演出に変化をつける、シームレスにプレイに移行したりすることを実現しています。

使用したソフト
OS X Yosemite
Unity 5.2.0f3 Personal