(この記事の使用環境: Unity 2017.1.0f1 Personal、Windows10)
Unity - スペースシューター
https://unity3d.com/jp/learn/tutorials/projects/space-shooter-tutorial
チュートリアルの構成はこんな感じ。玉転がしゲームと比べると一気に複雑になっています。
動かしてみるとこんな感じ。
チュートリアルはまだ続きます。
(ここまでは以前にやってことがあったのですが、これ以降は今回初めてやりました)
今回は以上です。
Space Shooter tutorial の紹介
今回はUnity公式チュートリアルから、「Space Shooter tutorial」を紹介します。Unity - スペースシューター
https://unity3d.com/jp/learn/tutorials/projects/space-shooter-tutorial
スペースシューター
簡単なトップダウン式のアーケードシューティングゲームを作りながら、もっと Unity の操作に慣れましょう。
Unity が提供する基本アセットやビルトインコンポーネントを使ったり、簡単なカスタムコードを書いたりしてみましょう。それらをとおし、インポートしたメッシュモデル、オーディオ、テクスチャ、マテリアルなどの使い方を学びます。
チュートリアルの構成はこんな感じ。玉転がしゲームと比べると一気に複雑になっています。
Introduction
- Introduction to Space Shooter
Space Shooterの導入、概要説明
1. Game setup, Player and Camera
- Setting up the project
プロジェクトのセットアップ - The Player GameObject
プレイヤーゲームオブジェクトの配置。Mesh Colliderをアタッチ。
コライダー用にシンプルな形状のメッシュを適用する。 - Camera and lighting
シーンの背景色設定、プレイヤーオブジェクトを照らすライトの設定(三点照明)。 - Adding a background
背景の設定。Quadオブジェクトにテクスチャをセット。
背景がライティングの影響を受けて暗くならないように、シェーダーをUnlit/Textureに変更。 - Moving the Player
プレイヤーオブジェクトをスクリプトで動かせるようにする。
プレイヤーオブジェクトが画面外に移動できないよう範囲設定する。
移動限界座標を設定するPublicクラス Boundary はPlayerController.cs内に定義し、属性[System.Serializable]を付けることによってインスペクターに表示させる。
また、左右移動の際に機体を移動方向に傾ける(チルト)。 - Creating shots
プレイヤーが発射するレーザーショット(Bolt)を作成する。Quadにレーザーのマテリアルをセットする。
シェーダーは背景が透過するようMobile/Particles/Additiveを選択する。
CapsuleCollider(isTrigger)とRigidbody(UseGravityをオフ)をアタッチする。
スクリプト(Mover.cs)で、生成されたレーザーショットが前方に飛んでいくようにする。
レーザーショットオブジェクト(Bolt)をプレハブ化する。 - Shooting shots
ショット発射位置と発射スパンを指定し、ショットを発射できるようにする。
2. Boundaries, Hazards and Enemies
- Boundary
余計なオブジェクトを残さないよう、ショットが画面外に出たらショットオブジェクトをDestroyする(DestroyByBoundary.cs、OnTriggerExit使用)。 - Creating hazards
Asteroid(小惑星)オブジェクトを作成、ランダムに回転させる(RandomRotator.cs)。
他のオブジェクトとの衝突により、衝突したオブジェクトとともにDestroyされる(DestroyByContact.cs)。 - Explosions
Asteroidが他のオブジェクトと衝突したとき、爆発エフェクトを再生するようにする(DestroyByContact.cs)。
また、プレイヤーオブジェクトがAsteroidと衝突したとき、専用の爆発エフェクトを再生するようにする。
Asteroidが画面下に向けて移動するようにする(Mover.cs)。
Asteroidをプレハブ化する。 - Game Controller
GameControllerスクリプトを作成し、スクリプトからAsteroidインスタンスを生成する。
生成時のAsteroidインスタンスの位置および回転を指定する。 - Spawn Waves
一定間隔ごとにAsteroid群が生成されるようにする(GameController.cs)。
各種爆発エフェクトが一定時点後にDestroyされるようにする(DestroyByTime.cs)。
3. Scoring, Finishing and building the game
- Audio
爆発時・ショット発射時の効果音およびBGMを追加する。音量を調整する。 - Counting points and display the score
スコアの計算と画面表示。Asteroidを壊すたびにスコアを加算し、画面に表示する。 - Ending the game
プレイヤーがAsteroidにぶつかると画面にGame Overテキストを表示する。
次いで、リスタートのためにはRキーを押すよう促すメッセージを画面に表示する。
この状態でキーボードのRキーを押すとゲームリセットのためシーンを再読み込みする(GameController.cs)。 - Building the game
WebGL用にビルドする。
動かしてみるとこんな感じ。
チュートリアルはまだ続きます。
(ここまでは以前にやってことがあったのですが、これ以降は今回初めてやりました)
4. Extending Space Shooter
- Extending Space Shooter: Enemies, More Hazards, Scrolling BG...
※ 説明動画が2時間以上ある(かつ、説明もかなりくどい)ので覚悟が必要。
・Asteroidを1種類から3種類に増やす。
・背景にParticleSystemによる星々を加える(StarField)。
・背景オブジェクト(Background)を複製し、Vキーでドラッグして、元のオブジェクトとつなげる。
・EnemyShip(敵)オブジェクトの作成。(※engines_enemyのRotationはインスペクターで 90, -90, 0 に設定した)
・EnemyBolt(敵の弾)オブジェクトの作成。EnemyShipから発射されるようにする。
・EnemyShipにMover.csをアタッチして縦方向に移動させる。
・EnemyShipの左右移動(回避移動)のためにEvasiveManeuver.csスクリプトを作成し、設定を行う。
・EnemyShipオブジェクトをプレハブ化する。
・GameController.csのインスペクターで、hazardsにEnemyShipを加える。
・Playerが3方向にショットを発射するようにする。 - Mobile Development: Converting Space Shooter to Mobile
すみません。ここで挫折。このパートも説明動画が1時間半以上あります。
今回は以上です。
コメント