Unityで草生えるわ――VRでも使える地形生成、3Dキャラクター操作、スクリプトで当たり判定:ゲーム開発初心者のためのUnity入門(5)(6/6 ページ)
Unityで3Dゲームを作るまでのいろいろな処理を解説する連載。今回は、Terrainで山、草、木を作る方法、人型の3Dモデルをキーボードで動かす方法、Box Colliderで当たり判定のスクリプトを追加する方法などを紹介する【Windows 10、Unity 5.4に対応。C#のコードを追加】。
新規スクリプトの追加
Hierarchy内の「outarea」(先ほど設定したCubeオブジェクト)を選択し、「Inspector」内の「Add Component」をクリックする。
表示されるリストから「New Script」を選択する。すると「Script」の「Name」を入力する画面が表示されるので「outareaScript」と入力する。「Language」には「C Sharp」か「Java Script」のいずれかを選択する。図35では、「C Sharp」を選択している。
Box Colliderで当たり判定
図35の状態で「Create and Add」ボタンをクリックすると、「Inspector」に「Outarea Script(Script)」の項目が追加される(図36)。また、「Box Collider」の「Is Trigger」にチェックを付けておく。「Box Collider」は「当たり判定」(衝突判定)を行うために必要だ。なおColliderは、「衝突装置」を意味している。
この場合は、「Player」が「outarea」に入ったかどうかを判定するために、「Is Trigger」にチェックを付ける必要があるのだ。
エディタでスクリプトを書き込む
図36の画面から、「Outarea Script(Script)」内の「Script」に入力されている「outareaScript」をダブルクリックする。すると、VSかMonoDevelopのいずれかが起動する(図37、38)。
以降は、C#とJavaScriptで読み分けてほしい。
C#の場合
VSが起動すると、void Startとvoid Updateがすでに準備されている。void Startには、読み込み時に1回だけ実行される処理を記述する。void Updateには、フレームごとに読み込まれる処理を記述する。
今回の落下処理は「void OnTriggerEnter」イベントに記述する。このイベントは、先に設定したBox Colliderによって実行されるイベントだ。この処理は自動的には追加されていないので、自分でリスト1のように記述する必要がある。
using UnityEngine; using UnityEngine.SceneManagement; public class outareaScript : MonoBehaviour { void OnTriggerEnter(Collider myCollider) { if(myCollider.tag=="Player") { SceneManager.LoadScene(0); //SceneManager.LoadScene("自然を作成する"); } } }
JavaScriptの場合
MonoDevelopが起動すると、function Startとfunction Updateがすでに準備されている。function Startには、読み込み時に1回だけ実行される処理を記述する。function Updateには、フレームごとに読み込まれる処理を記述する。
今回の落下処理は「function OnTriggerEnter」イベントに記述する。このイベントは、先に設定したBox Colliderによって実行されるイベントだ。この処理は自動的には追加されていないので、自分でリスト2のように記述する必要がある。
import UnityEngine.SceneManagement; function OnTriggerEnter(myCollider:Collider) { if(myCollider.tag=="Player"){ SceneManager.LoadScene(0); //SceneManager.LoadScene("自然を作成する"); } }
if文で条件分岐
図36で「Box Collider」の「Is Trigger」にチェックを付けているため、「OnTriggerEnter」イベントが実行される。
リスト1の7行目、リスト2の5行目にある「Player」は図33で「Tag」に設定したThirdPersonControllerだ。if文で「Player」が「outarea」に衝突したら(落下したら)という条件分岐をしている。
シーンを読み込む「SceneManager.LoadScene」の使い方
なおUnity 5.3からは、Unity 5.2まで使っていた「Application.LoadLevel(Application.loadedLevel);」は使用できなくなっている。代わりに「SceneManager.LoadScene(0);」を使用する。このSceneManagerを使用するために、「UnityEngine.SceneManagement」を読み込んでおく必要がある(リスト1の1〜2行目、リスト2の1行目)。
「SceneManager.LoadScene(0);」で現在のシーンを再度読み込み直している。「0」はシーンのインデックス番号だが、今回は、シーンは1個しかないので「0」を指定している。よって、落下したら元のシーンに移動することになる。
また、コメントアウトしているが、直接「シーン名」を指定することもできる。この場合は、Unityメニューの「File」→「Save Scene as」からシーン名を保存しておく必要がある。
スクリプトを書いたら必ずビルドする
スクリプトが書けたら、「ビルド」という作業が必要だ。ビルドするには、VSの場合はメニューから「ビルド」→「ソリューションのビルド」と、MonoDevelopの場合は「Build」→「Build All」と、選択する。
ビルドに失敗すればエラーが表示されるので修正する。ビルドは成功しても、「警告」が表示されることもあるが、この場合は無視しても問題はない。
ビルドたら、エディタの画面を閉じで実行しよう。すると動画2のようになるはずだ。
次回は、当たり判定を、もっと簡単に設定できる「Mecanim Locomotion Starter Kit」
以上で、今回は終わりだ。初めてスクリプトが出てきたが、短いので難しくはなかったと思う。このように、少しのスクリプトを書くだけで、ゲーム性を持たせることができる。しかし、これは基本的な部分だけであって、実際に遊べるゲームを作るとなると、ある程度の量のスクリプトを書く必要があるだろう。
スクリプトを書かずに3Dキャラクターを動かすために、今回はUnityにもともと用意されているThirdPersonControllerを使ったが、次回はAsset Storeから「Mecanim Locomotion Starter Kit」を入手して、その使い方を解説する。より複雑な動きが可能になり、今回スクリプトで書いた当たり判定を、もっと簡単に設定できるので、お楽しみに。
参考文献
- 『Unity4入門 最新開発環境による簡単3Dゲーム制作』(SBクリエイティブ刊)
■更新履歴
【2016/11/17】Windows 10、Unity 5.4に対応しました。C#のスクリプトを追加しました。
著者プロフィール
薬師寺 国安(やくしじ くにやす) / 薬師寺国安事務所
薬師寺国安事務所代表。Visual Basicプログラミングと、マイクロソフト系の技術をテーマとした、書籍や記事の執筆を行う。
1950年生まれ。事務系のサラリーマンだった40歳から趣味でプログラミングを始め、1996年より独学でActiveXに取り組む。
1997年に薬師寺聖とコラボレーション・ユニット「PROJECT KySS」を結成。
2003年よりフリーになり、PROJECT KySSの活動に本格的に参加。.NETやRIAに関する書籍や記事を多数執筆する傍ら、受託案件のプログラミングも手掛ける。
Windows Phoneアプリ開発を経て、現在はWindowsストアアプリを多数公開中。
Microsoft MVP for Development Platforms - Client App Dev (Oct 2003-Sep 2012)。
Microsoft MVP for Development Platforms - Windows Phone Development(Oct 2012-Sep 2013)。
Microsoft MVP for Development Platforms - Client Development(Oct 2013-Sep 2014)。
Microsoft MVP for Development Platforms-Windows Platform Development (Oct 2014-Sep 2015)。
Copyright © ITmedia, Inc. All Rights Reserved.
関連記事
- HoloLens用Unity 5のプロジェクトをUWPとして書き出しエミュレータで動かす
拡張現実(AR)用ヘッドマウントディスプレイ「HoloLens」のエミュレーターを使ってHoloLens用アプリの作り方を解説する本連載。今回は、HoloLens用Unity 5で簡単なUnityプロジェクトを作成し、それをUWPに書き出してHoloLens Emulatorに配置する方法について。 - Unityでも使える無料ARライブラリVuforiaの基礎知識とライセンス登録、インストール、簡単な使い方
本連載では、ARを無料で制作できるライブラリVuforiaとUnityを使うことで、誰でも簡単にARのコンテンツを制作できる方法を紹介します。初回は、Vuforiaの概要とライセンス登録の仕方、Unityにセットアップする方法、簡単なARコンテンツの作り方について。 - UnityでWebカメラの画像をリアルタイムで複数テクスチャとして表示する&Kinectセンサーと連動させる
ゲーム開発環境Unity 5の「Personal Edition」では、Unity 4.6以前では有料だった機能が無料で使えるようになった。本連載では、Unity 5で無料になった機能の使い方について解説していく。初回はWebカメラと、「Kinect for Windows v2」を使ったサンプルを紹介する。