本記事の環境
本記事は以下の環境で開発を進めております。
- 開発OS:Windows OS(UnityはMac OSでも同様に開発可能)
- Unity:4.6
- 開発言語:C#
- IDE:Visual Studio 2013 + Visual Studio Tools for Unity(標準のMono Developでも可)
OSについてはWindowsを利用しますが、Macでも同様に開発可能です。IDEにVisual Studioを利用しますが、標準のMonoDevelopでもコードは変わりません。
サンプルプログラムは本記事開始時(第9回終了直後)のプロジェクトが「project_010_start.unitypackage」、終了時点のプロジェクトが「project_010_end.unitypackage」となります。
記事開始時点の状態にする
本記事の開始時点の状態から開発を開始する方法を紹介します。
project_010_start.unitypackageのダウンロード
project_010_start.unitypackageをダブルクリックすることで既存のプロジェクトにproject_010_start.unitypackageが読み込まれます。
新規プロジェクトで開始する場合は、新しいプロジェクトを作成したのち、上部メニューの「Assets」→「Import Package」→「Custom Package」でproject_010_start.unitypackageを読み込んでください。
IDEにVisual Studioを利用しない場合はImport時にUnityVSのチェックを外してください。
以上で本記事開始時の状態のプロジェクトが開かれます。
今回作成するサンプルを実行する
今回作成する内容を実行すると以下のようになります。コードを書き始める前にゴールを確認しておくと理解しやすくなると思います。
- 今回作成するものを確認する(Unity Playerプラグインを許可する必要があります)
GameObjectをレイヤーに分ける
前回、ハムスターが床から落ちずに方向転換させるために透明なGameObjectを配置しました。ハムスターの動きは意図した通りになりましたが、そのために「プレイヤーが操作するキャラクターまで透明なGameObjectに衝突してしまう」という問題が発生しました。この問題を解決するために期待する動作は以下です。
- ハムスターは透明なGameObjectの影響を受ける
- 操作キャラクターは透明なGameObjectの影響を受けない
この条件を実装するためにプログラムコードを書く必要はなく、Unity 2Dのレイヤー機能を利用します。
レイヤーの作成
レイヤーの追加
新規にレイヤーを作成します。レイヤーを利用するとGameObjectをグループ分けして管理することができます。
Hierarchyウィンドウからhamsterを選択し、InspectorウィンドウのLayerをクリックします。
Add Layerをクリックします。
画像のようにLayersが展開されていない場合は、Layersをクリックして展開します。User Layer 8とUser Layer 9に以下のようにTargetとTargetHitAreaと入力します。