背景スクロールについて

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
hiro

背景スクロールについて

#1

投稿記事 by hiro » 13年前

背景を①の背景を表示した後②の背景を表示してスクロールしてそのあとに③の背景表示したいのですがどうすればいいでしょうか
説明がわかりにくいと思いますので番号で順番を書いておきます。
①+②+②+③+③のように表示したい

下のソースは背景②だけをスクロールしてます。

コード:

// ********************************************************
//
//ステージ処理
//
// ********************************************************

//インクルード-------------------------------------------
#include "gs.h"//学内ライブラリィ
#include "def.h"//共通定義
#include "Stage2.h"//ステージ2

//グローバル変数の宣言------------------------------------
int Stage2X;//ステージ2のⅩ座標


//グローバル変数の参照------------------------------------
extern gsTexture sStage2;//ステージ2


//--------------------------------------------------
//ステージ2開始
//--------------------------------------------------
void Stage2Start()
{
	Stage2X = 0;//ステージ2
}


//----------------------------------------------
//ステージ2処理
//----------------------------------------------
void Stage2Main()
{
	// ステージ2
	Stage2X--;				// 左へスクロール
	if ( Stage2X < -1277 )	// 1画面分、左へ来たら
	{
		Stage2X += 1277;	// 1画面分、右へ移動
	}
}


//--------------------------------------------------------
//ステージ2表示
//---------------------------------------------------------
void Stage2Draw()
{
	gsDraw2D(sStage2, Stage2X, 0);//ステージ
	gsDraw2D(sStage2, Stage2X + 1277, 0);//ステージ2

}

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 背景スクロールについて

#2

投稿記事 by softya(ソフト屋) » 13年前

これは背景の重ね合わせの話でしょうか?
それともステージの切り替わりでステージ1の背景①からステージ3の背景③に間にステージ2の背景②を挟んで切り替わるという話なのでしょうか?
説明は背景①②③なのにプログラムはステージと書かれています。
ステージと背景の関係と、どう重ねるのかどうスクロールするのかなんのための処理なのかをちゃんと説明して下さい。

あと、もうひとつの質問も放置しないようにお願いします。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

hiro

Re: 背景スクロールについて

#3

投稿記事 by hiro » 13年前

「アクションゲームについて」とは別のプログラムです。


このソースはステージ2の中で背景です。
一部『//ステージ』となっているところがありますがそこは『//ステージ2』の誤りです。

背景を右隣に繋げて表示していくようにしたい


最初は背景①を表示しその右隣に背景②を2回ほど表示し
その右隣に背景③を表示(①+②+②+③の順番に)したい



それぞれの変数は次の通りです。

背景①   Stage2_1X

背景②   Stage2Xは Stage2_2Xに変更

背景③   Stage2_3X

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 背景スクロールについて

#4

投稿記事 by softya(ソフト屋) » 13年前

全部をつなげた座標系で仮想的に管理すればい良いでしょう。
構造体配列を使うと良いと思います。構造体には横スクロールしかしないなら仮想系のX座標と背景イメージの横サイズ、背景イメージハンドルは最低限必要です。これを接続する背景個数分の配列とします。
今画面に表示している仮想系の画面左上のX座標は自キャラの位置から逆算します。その座標から今画面に表示する背景イメージの位置を計算して背景を表示します。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

hiro

Re: 背景スクロールについて

#5

投稿記事 by hiro » 13年前

なんかよくわかりません。
添付したソースみたいに書くことってできませんか?

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 14年前
住所: 東海地方
連絡を取る:

Re: 背景スクロールについて

#6

投稿記事 by softya(ソフト屋) » 13年前

私には開発環境(学内ライブラリ)が無いので動作試験が出来ません。
あと、自分で書いたほうがより理解できると思います。

1.スクロール座標はSTAGE2_Xだけで管理。
2.今のコードの座標とイメージ(gsTextureの値)を構造体配列で管理するように書き換えてみてください。構造体配列に登録する座標はSTAGE2_Xからの相対座標です。
3.描画は構造体配列をループで回して構造体の座標とイメージを参照して行います。
4.1.2が上手く出来たら背景①②③を2の構造体配列に①②②③③の順で座標をずらして並べます。

これでつながったスクロールに成るはずです。
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

ISLe
記事: 2650
登録日時: 14年前
連絡を取る:

Re: 背景スクロールについて

#7

投稿記事 by ISLe » 13年前

背景画像サイズのタイルが横に2つ並んだマップを円筒スクロールすると考えれば、タイルマップ(マップチップ)描画と同じなんですけどね。

hiro

Re: 背景スクロールについて

#8

投稿記事 by hiro » 13年前

インフルエンザにかかってしまい遅くなりました。

思い通りにいきました。
ありがとうございます。

閉鎖

“C言語何でも質問掲示板” へ戻る