Comments
Transcript
Unity4.xプログラミング Tips 集(第 3 弾) 第 6 章:エフェクト実行後に女
Unity4.xプログラミング Tips 集(第 3 弾) 第 6 章:エフェクト実行後に女剣士が出現 今回は、エフェクト実行後に、女剣士が画面上に出現する処理を解説します。 エフェクトとは、「効果」を表す意味で、オブジェクトに、炎や雨や光などの効果を与えることを指します。 ●新しいプロジェクトの作成 今回のプロジェクト名は、「EffectSample」とします。「Create」ボタンをクリックします。 すると「EffectSample」のプロジェクトの「Scene(シーン)」画面が表示されます。 この画面内でサンプルを作っていきます。 ●Asset Store から必要な Asset をダウンロードする。 今回は Asset Store から「Import」する「Asset」は下記の 4 つの「Asset」です。1 つが有料「Asset」になります。 1. KY Magic Effects Free(無料) 2.Mecanim Locomotion Starter Kit(無料) 3. Sword Gir #1($5) 4.Metal Textures Pack(無料) 「Asset Store」の検索欄に「KY Magic Effects Free」と入力します。表示される画面から「Import」をクリックします(図 1)。 図 1 「Import」をクリックする 「2」の「Mecanim Locomotion Starter Kit」は、これまでに何度も使用していますので、各自が「Import」しておいてください。 次に、同じ手順で、「Sword Gir #1」を「Import」します(図 2) 図 2 「Import」をクリックする 「4」の「Metal Textures Pack」は、これまでに「Import」したことがありますので、各自が「Import」しておいてください。 これら 4 つの「Asset」を「Import」すると、「Project」内に図 3 のようなフォルダーが作成されます。 図 3 「Import」して作成されたフォルダー ●舞台を作る まずは、「Hierarchy」の[Create]-[3D Object]ー[Plane]と選択し、「Plane」を 1 個配置します。同じく、[Light] から「Directional Light」も追加しておきます。 次に 、「 Project」 の「 Metal tetures pack」フォルダー内に ある「 pattern 01」 ~「 pattern 42」 の中に ある、好みの 「diffuse.tga」ファイルを、「Plane」上にドラッグ&ドロップしてください。筆者は「pattern 12」フォルダー内にあるのを選択しました (図 4) 図 4 「Plane」上に「Texture」を適用する ●3D キャラクター(SwordGirl)の配置と各種設定 図 4 の中央に、「Project」の「SwordGirl」フォルダーの「Models」フォルダーにある、「SwordGirl.FBX」ファイルをドラッグ&ドロ ップします。 「SwordGirl」を選択して、「Inspector」内で、「SwordGirl」が動けるよう設定しますが、この設定は、今までに何度も経験して いますので、以下に簡単に解説しておきます。 1.「Inspector」の「Animator」の「Controller」に「Locomotion」を設定します。 2.「Add Component」ボタンから[Physics]ー[Character Controller] を指定します。 3.「Character Controller」の「Center」の「Y」に「1」を指定します。 4.「Add Component」ボタンから[Scripts]ー[Locomotion Player]を指定します。 以上の設定で、「SwordGirl」は、[キーボード]の「上下左右矢印キー」で動くようになります。 図 5 のように配置してみました。 図 5 「SwordGirl」を配置した ●Effect(エフェクト)の設定 「Project」の「KY_magicEffectFree」フォルダーの、「Prefab」フォルダーに各種エフェクトを表す prefab ファイルがあります。今 回は、「energyBlast.prefab」を使用してみます。この「prefab」ファイルを、図 5 の「SwordGirl」の頭の上の方にドラッグ&ド ロップしてください。ちょっと位置決めが難しいので、「energyBlast.prefab」の「Inspector」から「Transform」の値を表 1 に載 せておきます。同時に、「SwordGirl」の位置も載せておきます。 表 1 「SwordGirl」の「Transform」の値 Position X=0.15 Y=-0.02 Z=0.13 Rotation X=0 Y=0 Z=0 Scale X=1 Y=1 Z=1 「energyBlast.prefab」の「Transform」の値 Position X=0.004 Y=1.712 Z=0.031 Rotation X=1.7201 Y=270 Z=90 Scale X=1 Y=1 Z=1 「energyBlast.prefab」の「Inspector」の「Start Lifetime」に「4」を指定して下さい。「energyBlast」の効果が「4 秒」継 続することになります(図 6)。 図 6 「energyBlast」の「Start Lifetime」に「4」を指定した ●カメラの追従 「SwordGirl」の動きに合わせて、カメラを追従させます。「Hierarchy」から「Main Camera」を選択し、「Add Component」 ボタンから、[Camera-Control]-[Smooth Follow]と選択します。 「Inspector」内に「Smooth Follow(Script)」が追加されますので、「Target」に「SwordGirl」を指定して下さい。 「Distance」には「5」、「Height」には「3」を指定して、上からの目線にします。この辺りの値は、いろいろ試してみて、自分にとっ て良い目線に合わせてください。 では、一度これで実行してみましょう。動画 1 のようになります。 動画 1 http://youtu.be/Y2Y9jt1Qy5E ここでは、「energyBlast」の「Effect」と「SwordGirl」が同時に表示されています。これを、「energyBlast」の効果が終わった 瞬間に、「SwordGirl」が出現するコードを記述します。 ここで、Unity メニューの[File]ー[Save Scene as]から「Effect サンプル」と言う名前で保存しておきましょう。 ●スクリプトの追加 スクリプトは、Unity メニューの[GameObject] -[Create Empty]と選択して、空の「GameObject」を作成して、この 中にスクリプトを持たせます。 「GameObject」の「Inspector」から「Add Component」ボタンをクリックし、[New Script]と選択して、「Name」に 「SwordGirlScript」と指定し、「Language」に「Java Script」を選択して、「Create and Add」ボタンをクリックします。 すると、「Inspector」内に「Sword Girl Script(Script)」が追加されますので、「Script」の「SwordGirlScript」をダブルク リックして、「MonoDevelop」を起動し、リスト 1 のコードを記述します。 リスト 1 「Effect」の後、「SwordGirl」が出現するコード(SwordGirlScript.js) private var obj1:GameObject; function Start() { obj1=gameObject.Find("SwordGirl"); obj1.SetActive(false); } function Update() { go(); } function go() { yield WaitForSeconds(4.0f); obj1.SetActive(true); } GameObject 型の変数 obj1 を宣言します。 Start 関数内で、Find を使って「SwordGirl」にアクセスし、obj1 で参照します。SetActive 関数に false を指定して、 「SwordGirl」を、Effect が動作している間は非表示としておきます。 Update 関数内で、「SwordGirl」を表示させる Go 関数を実行します。 Go 関数内では以下の処理を行います。4 秒間の待ち時間の後、SetActive 関数に true を指定して、「SwordGirl」を出現さ せます。 yield WaitForSeconds(4.0f); と記述して、4 秒間の待ち時間を作ります。この 4 秒は、図 6 の、「energyBlast」の「Start Lifetime」設定した時間と同じで す。 また、何故 Update 関数から、わざわざ Go 関数を呼び出している理由は、 yield WaitForSeconds(4.0f); という記述は、Update 関数内では使用できないという仕様に則っています。Update 関数は毎フレーム呼ばれる関数なので、当 然、この中に記述することはマズいですよね。 これで、完成です。では実行してみましょう。動画 2 のようになります。 動画 2 http://youtu.be/CbJJMYjdOxM では、ここで、Unity メニューの[File]ー[Save Scene]と選択して保存しておきましょう。 今回の章はこれで終わりです。非常に単純で簡単なコードで、「Effect」が終了した後で、「SwordGirl」を表示させることができま した。 「KY_magicEffectFree」フォルダー内には、他にもいろいろ「Effect」が用意されていますので、いろいろ試してみてください。 例えば、「Spark.prefab」を使用すると、動画 3 のように表示されます。 動画 3 http://youtu.be/BXlwH2Yn3Dg 「prefab」ファイルを単純に「SwordGirl」上にドラッグ&ドロップするだけですので、非常に簡単です。是非試してみてください。 ■コラム■ 筆者は Unity を始めるまでは、Windows ストア アプリにハマっていました。現在はあまり申請して公開はされてないのですが、 現在、Windows ストアで公開されている、筆者のアプリは、約 317 本程あるのではないかと思います。興味のある方は、検索 欄に「kuniyasu」と入力してみてください。筆者の作ったアプリが一覧で表示されます。 また、Kinect や Leap Motion にもいろいろ挑戦して記事を書きました。主に ThinkIT 様のサイトで公開されています。 その他には、Excel VBA Tips 集や、Unity の記事を 2015 年 1 月現在、@IT 様で公開させていただいています。興味のあ る方は、時折覗いてチェックして見ていただければ嬉しいです。 図 筆者の公開している Windows ストア アプリ(筆者のではないのも 2 点ほど含まれているようです) 今回の書籍は Amazon Kindle ストアの下記の URL で購入できます(500 円)。 http://www.amazon.co.jp/gp/product/B00S2C6G5G?%2AVersion%2A=1&%2Aentries%2A=0 よろしくお願いいたします。