【UnityC#講座】Flying Ballを強化する【PlayrePrefs、Skybox、Particle System、コルーチン】

Flying Ball Plus/Particle System正常

Unity5.6.0f3
Windows10

【Unity講座】角度と力を決めてボールの飛距離を競うゲーム

今回はこの前回のゲームに以下の機能や表現の追加をします。

・ハイスコアを保存する機能
・背景を交換
・発射時に光の粒子を飛ばす
・光の粒子が出た後にTextを表示する

これらができればさらにゲームを魅力的にできるので頑張りましょう。
それでは前回作った「Flying Ball」のプロジェクトを開いてください。

■PlayerPrefsで新記録を保存する

今回使うPlayerPrefsはUnityでは一番オーソドックスで手軽なセーブ機能です。
それを軽く使ってみますが詳しい機能は公式サイトを見てください。

PlayerPrefs

一般のサイトではこちらの方の記事がとても分かりやすいです。


【Unity開発】Player Prefs(セーブ機能)まとめ【ひよこエッセンス】

さあまずはTextを出しましょう。
前に出したTextと間違えないように今回は名前を変えます。
Hierarchyにある出したばかりのTextを右クリックして「Rename」を左クリックしてください。

Hierarchy > Text > Rename

名前は「HighScore」とします。

Flying Ball Plus/HighScore表示

Flying Ball Plus/HighScore、Transform

Flying Ball Plus/Text(Script)

注目して欲しいのはRect Transformの左側に上にcustomと書かれた四角いものがあり、それをクリックするともっと四角いものが出てきます。
それはAnchor Presetと言い、どの画面の端を基準にするかを決められます。

Flying Ball Plus/Anchor Preset

例えばスマホゲームで画面のサイズの比率が機種によって替わる時に意味があります。
画面が縦長になった時、右端を基準にして左端に設置していると左端に飛び出てしまうことがあります。
今回は右上を基準にして右上に設置したので画面が小さくなっても右上に飛び出るということはありません。

そしてTextを右よりになるようにします。

Text(Script) > Paragraph > Alignment

ここを上の画像のように右側を選んでください。

さあ、スクリプトを書きましょう!
名前は同じHighScoreにします。

PlayerPrefs()の””でくくった部分がキーで、それを替えると別のデータとして扱われます。

書き上げたらHighScoreにドラッグ&ドロップしてください。
実はどのオブジェクトでも良いのですが今回はそこにします。
そしてそのInspectorにできたHighScore(Script)の空欄にSphereとHighScoreをドラッグ&ドロップしましょう。

さて、無事新記録は保存されたでしょうか?

Flying Ball Plus/GIF/HighScore

新記録をリセットしたい時はvoid Start()に以下のコードを入れて再生し直すと消えています。

PlayerPrefs.DeleteKey(“HighScore”);

■Skyboxから背景を交換する

Unityははじめ、ゲーム画面に薄い青空が背景に広がっています。
それはSkyboxと言い、専用の画像が周囲を覆って背景になっており、替えることもできるので試しにやってみましょう。
今回は「Skybox Volume 2 (Nebula)」という無料のアセットを使わせてもらいます。

Asset Storeは画面上部のWindowをクリックした先にあります。

さて、Skyboxを変更するには画面上部のメニューのWindowから以下のようにたどって行ってください。

Window > Lighting > setting

Flying Ball Plus/Lighting,Skybox

そこで出てきたSceneタブのSkybox Materialから変更します。
その右端の小さな丸をクリックしてください。

そうすると、このようにガラリと雰囲気を替えることができます。

Flying Ball Plus/Skybox変更1

Flying Ball Plus/Skybox変更2

Flying Ball Plus/Skybox変更3

実はもうひとつSkyboxを変更する方法があり、それはCameraのComponentを利用したものです。
Main Cameraを選択し、InspectorのAdd ComponentをクリックしてSkyboxを見つけてください。

Add Component > Rendering > Skybox

Flying Ball Plus/SkyboxのComponent

設置したらここでも右端の丸から選択することができます。
先ほどの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

出すと白い粒子が飛び散るはずですが・・・

Flying Ball Plus/Particle System、ピンク

もしこのようにピンクの四角が出るようならRendererDefault-Particleをセットしなくてはいけません。
Inspectorからこのようにしてたどって行ってください。

Particle System > Renderer > Material

Materialの右端の丸をクリックしてDefault-Particleを見つけます。

Flying Ball Plus/Particle System > Renderer > Material” width=”285″ height=”79″></p>
<p><img class=

それを左クリックすれば正常になります。

Flying Ball Plus/Particle System正常

ではParticle Systemの設定に入ります。
LandingEffectのInspectorのParticle Systemを見てください。

Flying Ball Plus/Particle System設定

初めから表示されている欄はこのようにします。
Loopingは何回も繰り返すか、Play On Awakeはゲームに表示されたらParticleを出すかというものです。
どちらもいらないのでチェックを外してください。
Start LifetimeはParticleが表示される時間です。

Flying Ball Plus/Particle System、Emission

続いてEmissionはこうします。
左上にチェックが入っていなければ入れて、Burstは右下の+ボタンを押して設定してください。
これでParticleが一度に出るようになります。

Flying Ball Plus/Particle System、Shape

ShapeはParticleの出方の形です。
今回はCircleにしてRadiusも0.01にしてください。

Flying Ball Plus/Particle System、Transform

そうすると縦に円形状にParticleが出るのでLandingEffectの角度をX軸に90度変えます。

Flying Ball Plus/Particle System、Size over Lifetime

Flying Ball Plus/Particle System、Particle System Curves

最後はSize over Lifetimeです。
左上のチェックを入れたらSizeの欄の灰色の長方形をクリックしてください。
そうするとInspectorの下部にグラフのようなものが出てくるのでそれを左上から右下に直線が引かれた形のものを選びます。
これはParticleの粒の形の変化で、最初が大きくて最後に小さくなることを表します。

もしそれがそのグラフが出ていなかったら、一番底にあるParticle System Curvesという文字の部分をクリックすると出るはずです。

そして次はスクリプトを書く版なのですが、その前にひとつすることがあります。
LandingEffectにまたAdd Componentし、SphereColliderをつけてください。
Colliderとはオブジェクトの接触範囲です。
その中にあるIs Triggerを忘れずにチェックしてください。
そうしないとColliderがSphereとぶつかってしまいます。

Flying Ball Plus/Particle System、Sphere Collider、Is Trigger

さあ新たにC#スクリプトを書きましょう。
名前はこちらもLandingEffectにします。

さあ無事Particleは出たでしょうか?

Flying Ball Plus/GIF/Particle System

■コルーチンでParticleが出てからTextを出すようにする

Particleが無事出たのは良いのですが、Textと同時に出られては見にくくてしょうがありません。
なのでTextの表示を少し遅らせましょう。

そこで使うのはコルーチンというコードです。
これはこれが終わった何秒後にこうする、というようなことを設定できるものです。
それではLandingスクリプトを開いてください。

これでParticleが消えた後にTextが表示されるようになりました。

Flying Ball Plus/GIF/Particle System、コルーチン

■まとめ

今回はPlayrePrefs、Skybox、Particle System、コルーチンの最低限の使い方を学びました。
これらの理解をさらに深めればもっと凄いゲームを作れるようになります。
自分に必要なものからそれに関する記事を読んで理解を深めましょう。

スポンサーリンク

目次に戻る