2017.04.19
第3回目:Humpback Whale
今回紹介するAssetは「Humpback Whale」です。これは「くじら」のAssetです。今回はこの「クジラ」を空に飛ばして「空飛ぶくじら」を実現します。無料のAssetになります。ここでは大空を泳がせますが、大海原を泳がせることも可能です。この点については、また機会があれば紹介したいと思います。
Humpback Whaleのインポート
Asset Storeの検索欄に「Humpback Whale」と入力すると表示されます。初めての場合は「ダウンロード」→「インポート」に進んでください。筆者は何度も使用していますので、「インポート」と表示されています(図1)。
図1から「インポート」をクリックすると、UnityのScene画面のProject内に図2のようなフォルダが作成され、必要なファイルが取り込まれます。
Sky5X Oneのインポート
次にAsset Storeから「Sky5X One」という空の風景を持ったAssetを「インポート」しておいてください。検索欄に、名前の一部を入力すると表示されます。すると、図2の中に、このファイルが取り込まれます(図3)。このAssetも無料です。
では、次に舞台を作っていきます。
舞台を作る
今回は「くじら」を空に飛ばすわけですから、「床」となるPlaneを配置する必要はありません。そのままの状態のScene画面を使用します。後程、このScene画面に空の背景を指定するようになります。
Humpback Whaleを配置する
Project内の「Assets」→「Humpback Whale」フォルダ内の「humback_whale_model23.fbx」をScene上に配置します。Main Cameraの位置を調節して図4のように表示されるようにしてください。
次に空の風景を設定します。
空の風景を設定する
Unityメニューの「Window」→「Lighting」と選択します。すると「Lighting」設定の画面が表示されます。
図5のScene画面から、「Environment Lighting」の「Skybox」の右端にある「」(〇に・)のアイコンをクリックします。すると「Select Material」の画面が表示されますので、その中から、今回は「sky5X2」を選択してみました。これらのMaterialは「Sky5X Oneのインポート」で取り込まれたMaterialです(図6)。
するとGame画面の空の風景が図7のように変化します。ほかにも何点か空の風景のMaterialが用意されていますので、各自が気に入ったMaterialを設定するといいでしょう。
では、次にキーボードの「左右上下矢印」キーで「くじら」を操作するスクリプトを書いていきます。スクリプトはUnity用に最適化されたJavaScript(Unity Script)、C#、Booの使用が可能です。今回は一番メジャーなC#を使用します。エディターには最新版のVisula Studio 2017(以降VS2017)を使いました。
スクリプトの記述
Hierarchyから「humback_whale_model23」を選択して、Inspectorから「Add Component」をクリックします。「New Script」を選択し、Nameに「ActionScript」、Languageに「C#」を選択して、「Create And Add」をクリックします。すると、Inspector内に「Action Script(Script)」の項目が追加されます。
Scriptの「ActionScript」をダブルクリックしてVS2017を起動し、リスト1のコードを記述します。
using UnityEngine; public class ActionScript : MonoBehaviour { private GameObject obj; void Start() { obj = GameObject.Find("humpback_whale_model23"); } void Update() { if (Input.GetKey("down")) { obj.transform.position -= transform.forward * 0.01f; } if (Input.GetKey("up")) { obj.transform.position += transform.up * 0.1f; } if (Input.GetKey("left")) { obj.transform.Rotate(0, 2, 0); } if (Input.GetKey("right")) { obj.transform.Rotate(0, -2, 0); } } } |
GameObject型の変数objを宣言します。Startメソッド内で、Findメソッドを使って「humpback_whale_model23」にアクセスし、変数objで参照しておきます。Updateメソッド内では、矢印キーによる条件分岐を行います。「下矢印キー」では前方向に進めます。この場合、
obj.transform.position += transform.forward * 0.01f; |
と、「+」で記述すると、なぜかクジラがバックしてしまいますので、前方向に進めるためには「-」と指定しておきます。
「上矢印キー」ではクジラが上方向に上がっていきます。「左矢印キー」はY軸を中心に「2」度回転、「右矢印キー」は反対方向に「-2」度回転します。
実際にPlayしたのが図8になります。
実際に動かしたのが動画1です。
今回は「クジラ」のAssetを使った「空飛ぶクジラ」を実現してみました。初めてスクリプトを書く作業が発生したのですが、そんなに難しくはなかったと思います。
C#の場合はエディターにVS2017を使用していますが、JavaScript(Unity Script)の場合は、Unityがデフォルトで用意しているMonoDevelopを使用する以外に方法がありません。Unity ScriptをVS2017で開くと、エラーの波線が沢山表示され収拾がつかなくなります。純粋なJavaScriptであれば、VS2017でも対応が可能ですが、Unityで使用するJavaScriptはUnity専用に最適化されていますので、VS2017では編集は難しいようです。
Unityがデフォルトで用意しているMonoDevelopも初期のころはインテリセンスも効いて大変に使いやすかったのですが、いつのバージョンからか、MonoDevelopではインテリセンスが効かなくなっており、大変に不便です。筆者も最初はUnity ScriptをMonoDevelopで使っていたのですが、インテリセンスが効かなくなってC#に移行しました。
なお、筆者は試したことはないのですが、Visual Studio Codeも使えるようです。
次回は、迷路を一瞬にして作成できる「MazeMaker(有料)」のAssetについて解説します。お楽しみに。