【2Dシューティング】Unity公式チュートリアルをやってみる5回目。背景をつくる。

こんにちは。【2Dシューティング】Unity公式チュートリアルをやってみるシリーズの5回目です。前回はさまざまな当たり判定を作成しました。
【2Dシューティング】Unity公式チュートリアルをやってみる4回目。当たり判定。

今回は背景の作成とスクロールの実装です。今回もめんどくさそうです。

背景をつくろう

ここでやること

  • 空のゲームオブジェクトを作成。名前はBackgroundsに。
  • Quadを3つ作成しBackgroundsの子要素に
  • Quadに指定されたマテリアルをアタッチ
  • 3つのQuad(Front,Middle,Back)の位置調整

空のゲームオブジェクトをつくってQuadもつくろう

空のゲームオブジェクトを作成。名前はBackgroundsにしてQuadを3つ作成する。Quadはhierarkhyのcreate→3DObject→Quadから作成可能だ。ひとつ作ったらCtrl-dで複製するテクニックを使って一気に3つ作成しよう。

作ったQuadの名前はそれぞれFrontMiddleBackにした。これをBackgrundsの子要素にした状態が以下だ。
screenshot 20181213 0306

Quadにマテリアルをアタッチしよう

作ったQuadFrontMiddleBackに指定されたマテリアルをあてていく。
screenshot 20181213 0312

位置とサイズの調整

公式チュートリアルと若干値がちがったが以下のように調整した。

Quadの位置とスケールの調整
FrontMiddleBack
Position Z0.10.20.3
Scale X141414
Scale Y101010
Scale Z111

重複した値もあるのでShiftを使った複数選択のテクニックを使って一気に入力していこう。

背景をスクロールさせよう

ここでやること

  • BackgroundScriptの作成
  • BackgroundScriptをFrontMiddleBackにアタッチ
  • 値の調整

背景をスクロールさせるためのBackgorundScriptをつくろう

コードはさっぱりです。覚えてもしょうがないのでコピペコピペ。

using UnityEngine;

public class BackgroundScript : MonoBehaviour
{
  // スクロールするスピード
  public float speed = 0.1f;
  
  void Update ()
  {
    // 時間によってYの値が0から1に変化していく。1になったら0に戻り、繰り返す。
    float y = Mathf.Repeat (Time.time * speed, 1);
    
    // Yの値がずれていくオフセットを作成
    Vector2 offset = new Vector2 (0, y);
    
    // マテリアルにオフセットを設定する
    GetComponent<Renderer>().sharedMaterial.SetTextureOffset ("_MainTex", offset);
  }
}

つくったScirptのアタッチしよう

FrontMiddleBackすべてにBackgroundScriptをアタッチ。

値を調整しよう

BackgroundScriptで変数を定義したので値が調整できるようになっている。値を調整することでFrontMiddleBackのスクロールスピードがそれぞれ違う値になっていいかんじになる。

Quadのスクロールスピード調整
FrontMiddleBack
Speed(BackgroundScript)0.10.080.02

ここまでの状態

わりとゲームっぽくなった。だるい。
screenshot-20181213-0341

次の記事

次の記事は敵の軍隊を実装しています。
【2Dシューティング】Unity公式チュートリアルをやってみる6回目。敵の軍隊