link facebook2 twitter youtube

【Unity】チュートリアルは一番の上達法!スペースシューター【チュートリアル2】

昔なつかしいアーケードゲーム、スペースシューター

Space Shooterチュートリアルでは、昔なつかしいスタイルのシューティングゲームを作ります。

  • アセットのインポート
  • ビルド設定
  • GameObject
  • 他のGameObjectとのインタラクティビティ
  • 背景
  • カメラ
  • ライト
  • モデル
  • アートワーク
  • C#によるスクリプト
  • BGM
  • ウェブに公開

などがこのチュートリアルで学べます!
では早速勉強していきましょう!

Setting up the project

アセットのインポート

チュートリアルのページにアセットのダウンロードのリンクがあります。
Unityにログインしてこのアセットをダウンロードしてください。

ダウンロードが完了すると、Unityで開くか聞いてきますのでUnityで開いてください。
Unityで表示されたアセットが全部選択されている状態でアセットをインポートしてください。
Projectビューのアセットにインポートしたアセットが表示されます。

ビルドセッティング

どのプラットフォームでアプリケーションを実行するか決めます。
現在のビルドターゲットはヘッダーに記載されています。
(デフォルトはPC Mac Linux Standalone

File > Build Settingと進み、どのプラットフォームで実行したいか決定します。
今回は、Web Playerにします。

注:2013年の終わりにUnityはWeb Playerの提供を終了しました。
なので、今回はWebGLを選択します。

ビルドターゲットが変更できたら、そのプラットフォームの横にUnityロゴが表示されます。これが現在選択されている証になります。

次に、ビルドセッティングをします。
Player Settingボタンを押します。

Inspectorに設定項目が表示されます。SpaceShooterでは、解像度を変更します。
アーケードゲームっぽくしたいので600x900に変更します。

解像度が変更されました。
しかし、縦が長く一望することができません。
なので、ゲームビュータブを上に移動させましょう。
タブをドラッグして上部に移動させましょう。

シーンビューとコンソールの間に入れます。

これでシーンとゲームとコンソールが見やすくなりました。
レイアウトの変更も簡単にできましたね。

この際、保存することをお忘れなく。
レイアウトの変更を保存しなかった場合、最後に保存したレイアウトに戻ってしまいます。

レイアウトの保存方法です。

ウィンドウの右上に現在選択されているレイアウトが表示されています。
そこをクリックして新しいレイアウトをとして現在のレイアウトを保存します。
保存の際には、レイアウト名を指定します。

これで、簡単にレイアウトを変更することができます。
ビルドターゲットや、プロジェクトの特性に合わせて臨機応変にレイアウトを変更しましょう。

The Player GameObject

プレイヤーゲームオブジェクトを作成しましょう。
まず表示をシーンビューに切り替えます。これが一番作業しやすい画面です。

プレイヤーオブジェクト(船)を設置します。
船をAssetsから探します。

Modelsディレクトリの中にあります。
船をヒエラルキービューにドラッグアンドドロップします。

シーンビューに船が表示されました。

ヒエラルキービューの船の名前をPlayerに変更しましょう。

Playerの位置をデフォルト位置に

プレイヤーの位置を初期値(X,Y,Zそれぞれが0の位置)に移動させます。
これは簡単にできます。

InspectorのTransformの歯車アイコンをクリック、Resetを押すだけです。
X,Y,Zの位置が初期値になりました。

RigidBodyの設定

PlayerにRigidBodyをアタッチします。
ヒエラルキービューでプレイヤーがハイライトになっていることを確認して、InspectorからAdd Componentを押下、そして Physics > RididBodyを選択してアタッチしてください。

RigidBodyはデフォルトで、重力が計算されていて自然落下するようになっています。
スペースシューターの舞台は宇宙。重力が及ばない世界での戦いです。
重力の設定を外します。

InspectorのRigidBodyのUse Gravityのチェックを外すだけです。

Colliderの設定

宇宙空間内の他のオブジェクトとの衝突判定を行うために、Colliderの設定をします。
Add Componentを押下、そして Physics > Cupsule Colliderをアタッチしてください。

この設定により、どれくらいの数のオブジェクトがあるか計測できます。

Cupsule Colliderのサイズを変更します。
DirectionZ-Axisに変更します。

初期値はY-Axisです。これは下から上に、コライダーの範囲が広がっています。
この船の形から言うと、進行方向に奥行き的に伸びている形なので、Z-Axisを選択しました。

次にサイズを変更します。
今のシーンビューからでは見にくいので、船を違う角度から見てみます。
シーンビューのギズモのYをクリックして上からの視点に切り替えます。
それによりRadiusHeightでの操作が簡単になります。

Mesh Collider

Cupsule Colliderの目的はなんでしょうか?
敵自体、もしくは光線との衝突を判定することです。
その際、もっと適したコライダーがあります。

Mesh Colliderです。

なので、Cupsule Colliderを削除して、Mesh Colliderをアタッチしましょう。
Convexにチェックをいれてください。それにより、プレイヤーにピッタリとはりつくようにコライダーが表示されます。

Inspectorにあるメッシュレンダラーを非表示にするとより見やすくなります。

最後にシズル感をだします。
Assets > Prefabs > VFX > engines_playerをPlayerにアタッチします。

すると、2つのパーティクルが表示されます。

Camera and Lighting

カメラとライトをセッティングします。
このゲームは上から下にコンテンツが流れていく形式です。

つまり上空の固定された視点からゲームの様子を見下ろす感じです。
現時点のカメラの位置はPlayerの背後の少し上の位置にあります。

Unityで新しいシーンを作成すると必ずカメラが含まれ、このデフォルトの位置に配置されます。

カメラの移動

カメラを移動させましょう。
まず、カメラの位置をリセットします。

Inspectorの歯車からリセットします。
カメラを下に向けるのでRotateさせます。

X-Axisを90にします。次にPositionのY-Axisを上にして上からPlayerを見るような視点にします。
このゲームでは10に設定します。

カメラタイプの変更

ProjectionをOrthgraphicに変更します。
Orthographicにすることで上からアップライトのように写すことができます。
アーケードゲームにピッタリですね。

カメラでの画角のサイズをきめるのがSizeです。
10にします。

画面の下から船が出てくるように変更

カメラの下の方から船が出てくるようにしたいです。
しかし、Transformで変更するのはよくないです。シーンビューとゲームビューで差異が生まれるからです。

ゲームオブジェクトを変更するのではなく、カメラの位置を移動させましょう!
ヒエラルキービュー上のカメラを選択し、PositionのZを任意の値にします。

今回は5にします。

カメラの背景色を変更する

現在のカメラの背景色はデフォルト色になっています。

clear flagの設定は、Skyboxになっています。
今回は、黒背景にしたいので、Solid Colorに変更しましょう。

Solid Colorでは背景色を選択します。
Backgroundからカラーピッカーを選択して、黒にします。

ライトを設定する

ライトには三種類あります。

- Key(Main) Light
- Fill Light
- Rim Light

です。

ヒエラルキービューにあるDirectional LightMain Lightにリネームします。
シーンビューに移動します。

次にライトのポジションをオリジンに戻しましょう。
やり方はもうご存知ですね。

RotationaxisXを20にします。いい感じで照らされていますね。
RotationaxisYを-115にします。横から照らされているように見えます。

ゲームビューに戻りましょう。
太陽のように、機体が照らされていますね!
Intensityを変更して、光の強度を変更しましょう!

InspectorパネルからIntensityの値を1.5に変更します。
いい感じに横から照らすライトになりました!

リアルなライティングは実現しましたが、ライトに照らされていない側は暗すぎて、ゲームとしては見にくさが生まれています。
新たなライトを追加して、暗い方も照らしてみます!
それにはFill Lightを使います。

HierarchyビューからMain Lightを選択してメニューバー > Edit > duplicateを押下します。
Main Lightが複製されます。

Fill Lightにリネームします。

まず、Fill lightのローテーションをリセットします。
次に、シーンビューに移動します。

シーンビューは、ライトなどの調整にはとても便利です。
GUIをドラッグしてライティングを調節します。
いい感じに調整できたら、ゲームビューに戻って確認します。

いいかんじですね。
ただ、メインライトが2つはちょっと過ぎる感があります。
なので、Fill Lightの方のIntensityを下げていい塩梅に調整します。
1にしましょう!

ライトのカラーを変更することでも雰囲気を演出できます。
Inspectorビューのカラー選択をクリックして、カラーウィンドウを表示させます。

Rの値を128GBの値を192に変更して光の色を水色に変更します。
調整したライトの色を確認するには、Inspectorビューの最上部のFill Lightの項目のチェックをつけ外しすることで確認できます。

Rotation X axisを微調整しましょう。5にします。

ギズモで編集したRotation Y axisを125に丸めます。

最後にRim Lightを追加しましょう。
Fill Lightを複製して、Rim Lightにリネームします。

Rim Lightの設定に、Fill Lightが邪魔なので、一旦、非表示にします。
Inspectorビューの最上部のチェックを外します。

Rim Lightを選択してローテーション値を初期化します。
Rim Lightはクリアなライトにしたいので、色を白に変更します。

Rim Lightは機体の後ろからエッジを際立たせるように照らします。
Rotation Y axisを65に設定しましょう。

Rim LightFill Lightと同じ位置から照らしています。
Rotation X axisを調整して後ろから光がくるようにします。

-15がいい感じです。
最後にIntesityを0.5にします。

Hierarchyビューを整理する

ライトの設定は終わりましたが、Hierarchyビューは混沌としています。
ライトはライトのまとまりとして一箇所に管理すると便利ですね。

Hierarchyビューでcmd + Nのホットキーで、新しいゲームオブジェクトを作成します。
リネームします。Lighting

Lightingをリセットします。これは忘れてはいけません。
リセットしないと設定した各ライトの表示が変わります。
歯車からResetを忘れずに。

では、各ライトをLightingにドラッグアンドドロップします。
これで管理がHierarchyビューがきれいに、保守性もアップしました。

シーンビューに移動して、

© eggplant