Unity2D:背景を動かす

Unity2Dでの背景の動かし方についてです。

 

背景を動かすことによって自分がその場にいてもあたかも移動しているように見せ、

疾走感をゲームに追加してあげることができます。

 

基本的にエンドレスラン系のゲームでは、自分自身がフィールドを移動できるようにしてしまうと

マップ上からはみ出さないようにするため、可能な限り大きく作らなくてはいけないという制約ができます。

 

そのため従来のシステムとして自分はその場にとどめ、

代わりに障害物を自分に接近させ通り過ぎた時点で消すという方法が一般的な気がします。

 

そのようにすることでマップ自体は、

自分が見える範囲を作成するだけで済むということです

 

ですがこのままであると自分がその場にとどまっているように見え疾走感に欠けるので、

背景を動かすことによってあたかも移動しているように見せることがとても重要になってきます。

 

では前置きはこれぐらいにして本題に移りたいと思います。

 

背景を動かすにはいくつか方法がありますが、

今回はoffsetを指定する方法を解説します。

 

1:コード、方法の解説

まずはコードからです。

 

private  float speed = 1;
private  float offset;
    void Update () {
        offset += Time.deltaTime * speed;
        renderer.material.SetTextureOffset("_MainTex", new Vector2(offset, 0));
    }

 

こちらの方法は左端に表示される位置を徐々にずらしていき

移動させているように見せる方法です。

 

例としてoffsetが0の画像がこれだとします。

 

2014-05-24_133537 2014-05-24_133617

 

次にoffsetを0.5としたとき、

2014-05-24_133617

 

こうなります。

つまりoffsetとは、表示する開始位置を決定していするものだということです。

 

offsetを0.5としたとき、開始位置がリンゴの真ん中から始まって右に行き、

最終的に真ん中に戻ってくるといった具合です。

 

これを利用し開始位置をずらすことで背景があたかも移動しているように見せるのが、

offsetを使用する方法です。

 

次に具体的な実装方法です。

2:具体的な実装例

まずUnityEditor上でGameObject->Quadを選択し、

Quadに自分の使用したい画像を登録します。

用意する画像はtexture型でimportします。

 

次に作成したQuadに上で記述してあるコードを

アタッチします。

 

以上になります。再生を押して背景がしっかり動けば完成になります。

 

背景を動かすのはとても簡単に実装できるので、

2Dゲーム開発でどんどん使っていきたいですね。

 

以上、Unity2Dで背景を動かすでした。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です