ループスクロール?

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
YYSS
記事: 125
登録日時: 9年前
連絡を取る:

ループスクロール?

#1

投稿記事 by YYSS » 9年前

640x480の描画領域に、640x480の背景画像を右から左に途切れないようにスクロールさせたい。

何がしたいかというと、

↓画像とします
12345

右から左にスクロール
2345

右側に何も表示されないスペースが出来てしまうので、
23451

のように、描画領域から外れた部分を右に持っていきたいのですが
何故か左側に表示されない空間が出来てしまいます。

コード:

		static int SetX;
		SetDrawBright( Alpha -50, Alpha -50, Alpha -50 );

		SetDrawBlendMode( DX_BLENDMODE_ALPHA, Alpha -Alpha2 );
		DrawRectGraph( 0, 0, SetX, 0, 640- SetX, 480, Back[0], false, false );
		DrawRectGraph( 640 - SetX, 0, 0, 0, SetX, 480, Back[0], false, false );

		SetX	+= (int)ScrollXSpeed;

		if( SetX >= 640 ){		SetX	-= 640;	}
		else if( SetX >= 0 ){	SetX	-= 640;	}

画像も貼っておきます。
左右が繋がっても違和感が無いようにしてあります。

これを元に多重スクロールなどを作っていきたいので、
アドバイスをお願いします。
添付ファイル
umi.png

ISLe
記事: 2648
登録日時: 10年前
連絡を取る:

Re: ループスクロール?

#2

投稿記事 by ISLe » 9年前

SetXが640以上なら640引くのは分かるのですが、次に回ってきたとき0以上でまた640引いてしまいます。

アバター
海Sea
記事: 102
登録日時: 9年前
住所: 大阪
連絡を取る:

Re: ループスクロール?

#3

投稿記事 by 海Sea » 9年前

こんにちは。
コードを見る限り、こちらの勘違いでしたら申し訳ありませんが
画像の大きさを考慮されていないのでは?と思いました。

ゲーム画面の大きさがXで640、Yで480で
画像もそれに合わせていると思います。
画像は移動するさい、X方向の0の位置にきた時に右の位置に戻すということですが、
基本的に画像は、中心でその位置を認識しています。
なので、大きさが640の場合だと中心は320の位置です。
そのため、左から右に移動させるときは、X軸の-320の位置で右に画像を配置しなおすようにします。
そして、右に移動させた画像を、640+320=960の位置に配置しなおせば、
ちゃんときれいにスクロールされると思います。

アバター
YYSS
記事: 125
登録日時: 9年前
連絡を取る:

Re: ループスクロール?

#4

投稿記事 by YYSS » 9年前

すみません、こちらの表記ミスが原因でした

コード:

        if( SetX >= 640 ){      SetX    -= 640; }
        else if( SetX >= 0 ){   SetX    -= 640; }
ではなく

コード:

        if( SetX >= 640 ){      SetX    -= 640; }
        else if( SetX < 0 ){   SetX    += 640; }
のようにしたら解決しました。

閉鎖

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