友人と走れしゆくんというゲームを作りました。
そのときの学習した点、難しかった点を備忘録として書いていきます。
——————————————————————–
今回は、背景をループさせ続けるようプログラムコードを書いていきます。
今回作ったゲームは、プログラム上キャラクターは座標移動していなく背景と敵キャラクターが動いています。
まずネタばらしから

このようにゲーム画面より大きい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毎に呼び出せば完成です。


コメント