Unity5.6.0f3
Windows10
□
【Unity講座】角度と力を決めてボールの飛距離を競うゲーム
今回はこの前回のゲームに以下の機能や表現の追加をします。
・ハイスコアを保存する機能
・背景を交換
・発射時に光の粒子を飛ばす
・光の粒子が出た後にTextを表示する
これらができればさらにゲームを魅力的にできるので頑張りましょう。
それでは前回作った「Flying Ball」のプロジェクトを開いてください。
目次
■PlayerPrefsで新記録を保存する
今回使うPlayerPrefsはUnityでは一番オーソドックスで手軽なセーブ機能です。
それを軽く使ってみますが詳しい機能は公式サイトを見てください。
一般のサイトではこちらの方の記事がとても分かりやすいです。
【Unity開発】Player Prefs(セーブ機能)まとめ【ひよこエッセンス】
さあまずはTextを出しましょう。
前に出したTextと間違えないように今回は名前を変えます。
Hierarchyにある出したばかりのTextを右クリックして「Rename」を左クリックしてください。
Hierarchy > Text > Rename
名前は「HighScore」とします。
注目して欲しいのはRect Transformの左側に上にcustomと書かれた四角いものがあり、それをクリックするともっと四角いものが出てきます。
それはAnchor Presetと言い、どの画面の端を基準にするかを決められます。
例えばスマホゲームで画面のサイズの比率が機種によって替わる時に意味があります。
画面が縦長になった時、右端を基準にして左端に設置していると左端に飛び出てしまうことがあります。
今回は右上を基準にして右上に設置したので画面が小さくなっても右上に飛び出るということはありません。
そしてTextを右よりになるようにします。
Text(Script) > Paragraph > Alignment
ここを上の画像のように右側を選んでください。
さあ、スクリプトを書きましょう!
名前は同じHighScoreにします。
PlayerPrefs()の””でくくった部分がキーで、それを替えると別のデータとして扱われます。
書き上げたらHighScoreにドラッグ&ドロップしてください。
実はどのオブジェクトでも良いのですが今回はそこにします。
そしてそのInspectorにできたHighScore(Script)の空欄にSphereとHighScoreをドラッグ&ドロップしましょう。
さて、無事新記録は保存されたでしょうか?
新記録をリセットしたい時はvoid Start()に以下のコードを入れて再生し直すと消えています。
PlayerPrefs.DeleteKey(“HighScore”);
■Skyboxから背景を交換する
Unityははじめ、ゲーム画面に薄い青空が背景に広がっています。
それはSkyboxと言い、専用の画像が周囲を覆って背景になっており、替えることもできるので試しにやってみましょう。
今回は「Skybox Volume 2 (Nebula)」という無料のアセットを使わせてもらいます。
Asset Storeは画面上部のWindowをクリックした先にあります。
さて、Skyboxを変更するには画面上部のメニューのWindowから以下のようにたどって行ってください。
Window > Lighting > setting
そこで出てきたSceneタブのSkybox Materialから変更します。
その右端の小さな丸をクリックしてください。
そうすると、このようにガラリと雰囲気を替えることができます。
実はもうひとつSkyboxを変更する方法があり、それはCameraのComponentを利用したものです。
Main Cameraを選択し、InspectorのAdd ComponentをクリックしてSkyboxを見つけてください。
Add Component > Rendering > Skybox
設置したらここでも右端の丸から選択することができます。
先ほどのLightingでの変更はどのカメラにも映りますが、ComponentからだとそのCameraにしか映りません。
Cameraごとに使い分けたい時に使います。
Skyboxは自分でも作れるのですがそれはこちらをお読みください。
スポンサーリンク
■着地時にParticle(粒子)を出す
Particle Systemはオブジェクトから粒子を出すシステムです。
通常は白い粒子ですが、その色や出し方を替えたり、画像を入れることで血や炎など多彩な表現ができます。
それではまず空のオブジェクト(Game Object)を出しましょう。
Hierarchy > Create > Create Empty
出てきたGame Objectの名前を右クリック、Renameで「LandingEffect」に替えてください。
次はそのShotEffectのInspectorのAdd ComponentからParticle Systemをクリックします。
Add Component > Effects > Particle System
出すと白い粒子が飛び散るはずですが・・・
もしこのようにピンクの四角が出るようならRendererにDefault-Particleをセットしなくてはいけません。
Inspectorからこのようにしてたどって行ってください。
Particle System > Renderer > Material
Materialの右端の丸をクリックしてDefault-Particleを見つけます。
それを左クリックすれば正常になります。
ではParticle Systemの設定に入ります。
LandingEffectのInspectorのParticle Systemを見てください。
初めから表示されている欄はこのようにします。
Loopingは何回も繰り返すか、Play On Awakeはゲームに表示されたらParticleを出すかというものです。
どちらもいらないのでチェックを外してください。
Start LifetimeはParticleが表示される時間です。
続いてEmissionはこうします。
左上にチェックが入っていなければ入れて、Burstは右下の+ボタンを押して設定してください。
これでParticleが一度に出るようになります。
ShapeはParticleの出方の形です。
今回はCircleにしてRadiusも0.01にしてください。
そうすると縦に円形状にParticleが出るのでLandingEffectの角度をX軸に90度変えます。
最後はSize over Lifetimeです。
左上のチェックを入れたらSizeの欄の灰色の長方形をクリックしてください。
そうするとInspectorの下部にグラフのようなものが出てくるのでそれを左上から右下に直線が引かれた形のものを選びます。
これはParticleの粒の形の変化で、最初が大きくて最後に小さくなることを表します。
もしそれがそのグラフが出ていなかったら、一番底にあるParticle System Curvesという文字の部分をクリックすると出るはずです。
そして次はスクリプトを書く版なのですが、その前にひとつすることがあります。
LandingEffectにまたAdd Componentし、SphereColliderをつけてください。
Colliderとはオブジェクトの接触範囲です。
その中にあるIs Triggerを忘れずにチェックしてください。
そうしないとColliderがSphereとぶつかってしまいます。
さあ新たにC#スクリプトを書きましょう。
名前はこちらもLandingEffectにします。
さあ無事Particleは出たでしょうか?
■コルーチンでParticleが出てからTextを出すようにする
Particleが無事出たのは良いのですが、Textと同時に出られては見にくくてしょうがありません。
なのでTextの表示を少し遅らせましょう。
そこで使うのはコルーチンというコードです。
これはこれが終わった何秒後にこうする、というようなことを設定できるものです。
それではLandingスクリプトを開いてください。
これでParticleが消えた後にTextが表示されるようになりました。
■まとめ
今回はPlayrePrefs、Skybox、Particle System、コルーチンの最低限の使い方を学びました。
これらの理解をさらに深めればもっと凄いゲームを作れるようになります。
自分に必要なものからそれに関する記事を読んで理解を深めましょう。
スポンサーリンク