Hierarchy内の「outarea」(先ほど設定したCubeオブジェクト)を選択し、「Inspector」内の「Add Component」をクリックする。
表示されるリストから「New Script」を選択する。すると「Script」の「Name」を入力する画面が表示されるので「outareaScript」と入力する。「Language」には「C Sharp」か「Java Script」のいずれかを選択する。図35では、「C Sharp」を選択している。
図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で読み分けてほしい。
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("自然を作成する"); } } }
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("自然を作成する"); } }
図36で「Box Collider」の「Is Trigger」にチェックを付けているため、「OnTriggerEnter」イベントが実行される。
リスト1の7行目、リスト2の5行目にある「Player」は図33で「Tag」に設定したThirdPersonControllerだ。if文で「Player」が「outarea」に衝突したら(落下したら)という条件分岐をしている。
なお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のようになるはずだ。
以上で、今回は終わりだ。初めてスクリプトが出てきたが、短いので難しくはなかったと思う。このように、少しのスクリプトを書くだけで、ゲーム性を持たせることができる。しかし、これは基本的な部分だけであって、実際に遊べるゲームを作るとなると、ある程度の量のスクリプトを書く必要があるだろう。
スクリプトを書かずに3Dキャラクターを動かすために、今回はUnityにもともと用意されているThirdPersonControllerを使ったが、次回はAsset Storeから「Mecanim Locomotion Starter Kit」を入手して、その使い方を解説する。より複雑な動きが可能になり、今回スクリプトで書いた当たり判定を、もっと簡単に設定できるので、お楽しみに。
【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.