無限スクロールする背景の作り方 [Unity2D]
サンプル
背景オブジェクト が無限にスクロールしながらカメラに追従していきます。
実装方法
同じ画像が横にいくつか並んでいるような背景を用意して、
カメラがある程度移動したところで背景を横にずらします。
背景画像サンプル
コード
少し変な書き方かもしれないので、気になった方は手直しして使ってください。
色々と処理を載せたファイル
using UnityEngine;
namespace Object.Stage
{
public class Background
{
Camera camera;
float xMiddleWidth;
SpriteRenderer sprite;
public Background(
SpriteRenderer sprite,
Camera camera,
// 連続している画像の数
int magnifications
)
{
this.camera = camera;
this.xMiddleWidth = sprite.bounds.size.x / magnifications;
this.sprite = sprite;
}
// カメラ位置と現在の背景画像位置をもとに、背景画像のX座標を更新する
public void CheckCameraPositionAndUpdate()
{
float xPosition = sprite.transform.position.x;
DirectionMap direction = CalculateDirectionToReplace(xPosition, xMiddleWidth);
if (direction == DirectionMap.center)
return;
sprite.transform.position = new Vector3(
CalculateTargetPositionX(xPosition, xMiddleWidth, direction),
sprite.transform.position.y,
sprite.transform.position.z
);
}
// 移動先のX座標を計算する
float CalculateTargetPositionX(float xPosition, float xMiddleWidth, DirectionMap direction)
{
return xPosition + ((int)direction * xMiddleWidth);
}
// 背景画像を動かす方向を計算する
DirectionMap CalculateDirectionToReplace(float xPosition, float xMiddleWidth)
{
float xCameraPosition = camera.transform.position.x;
if (xCameraPosition > CalculateTargetPositionX(xPosition, xMiddleWidth, DirectionMap.front))
return DirectionMap.front;
if (xCameraPosition < CalculateTargetPositionX(xPosition, xMiddleWidth, DirectionMap.back))
return DirectionMap.back;
return DirectionMap.center;
}
}
enum DirectionMap : int
{
front = 1,
back = -1,
center = 0
}
}
MonoBehaviour
このファイルを背景画像コンポーネントにアタッチする。
using UnityEngine;
public class BackGround : MonoBehaviour
{
Object.Stage.BackGround backGround;
private void Start()
{
backGround = new Object.Stage.BackGround(
GetComponent<SpriteRenderer>(), // 背景画像
Camera.main, // 基準となるカメラ
4 // [赤白][赤白][赤白][赤白] と4回繰り返しているので4。画像の大きさと相談しながら調整する。
);
}
private void LateUpdate()
{
// カメラ位置と現在の背景画像位置をもとに、背景画像のX座標を更新する
backGround.CheckCameraPositionAndUpdate();
}
}
最後に
なんか変なことやっていましたらご指摘くださいm(_ _)m
Author And Source
この問題について(無限スクロールする背景の作り方 [Unity2D]), 我々は、より多くの情報をここで見つけました https://qiita.com/tktcorporation/items/a39014e05108eb68ef56著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .