友人と走れしゆくんというゲームを作りました。
そのときの学習した点、難しかった点を備忘録として書いていきます。
——————————————————————–
今回は、背景をループさせ続けるようプログラムコードを書いていきます。
今回作ったゲームは、プログラム上キャラクターは座標移動していなく背景と敵キャラクターが動いています。
まずネタばらしから
このようにゲーム画面より大きい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毎に呼び出せば完成です。
コメント