[UNITY]背景を無限にループさせ続ける


走れしゆくん

友人と走れしゆくんというゲームを作りました。
そのときの学習した点、難しかった点を備忘録として書いていきます。
——————————————————————–

今回は、背景をループさせ続けるようプログラムコードを書いていきます。

今回作ったゲームは、プログラム上キャラクターは座標移動していなく背景と敵キャラクターが動いています。
まずネタばらしから

このようにゲーム画面より大きい2枚の同じ画像が、横に並んでおり、一定の速度で移動しています。
一方が画面外のある座標まで達したとき、座標を右側に移動させる。という仕様になっています。

では作成手順を書いていきます。

画像を用意する

まずは動かす背景の画像を用意します。
画像は右端と左端が繋がるような画像ではないとループ時にずれてしまうため、だめです。
今回は実写のため、左右対称にして繋げた画像を1枚としました。(そのためよくみると影がおかしいことになっています)

プログラムコードを書く

基本的には大事なのは2つで
・画像を移動させる。
・ある位置に来たら初期位置に移動する。
です

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class Background : MonoBehaviour
{
    //座標を移動させる
    public void MoveBackGround(float x)
    {
        Vector2 pos = this.transform.position;
        pos.x -= x;
        pos.y = 0.0f;
        this.transform.position = pos;

        //座標がある位置まで来たとき、初期位置まで移動させる
        if (GetBackGroundPositionX() <= [positionA])
        {
            DefaultBackGround();
        }
    }

    //座標を取得
    private float GetBackGroundPositionX()
    {
        return this.transform.position.x;
    }

    //初期位置にもどす
    private void DefaultBackGround()
    {
        Vector2 pos;
        pos.x = [positionB];
        pos.y = 0.0f;
        this.transform.position = pos;
    }
}

あとは、MoveBackGroundメソッドをupdate毎に呼び出せば完成です。

コメント

タイトルとURLをコピーしました