マリオ的な横スクロール

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

マリオ的な横スクロール

#1

投稿記事 by SS » 15年前

素人で、つまらない質問をして申し訳ないのですが、
マリオ的な横スクロールはどうやればいいのでしょうか?
ゲームプログラミングの館にもスクロールについての解説はありませんでしたし、
参考になりそうなゲームCurse'sSoulも配布されておらず、
また、どこの解説サイトでもスクロールについての情報が少なく、詰まっています。

初めからキャラの座標を中央に固定するなら簡単そうですが、
だいだいキャラが中央にきた時にスクロールされますよね。

kazuoni

Re:マリオ的な横スクロール

#2

投稿記事 by kazuoni » 15年前

単純に考えて、
・始端、終端~中央まではキャラが移動
・キャラが中央にきたらキャラ固定で、その他が移動
でよいのではないでしょうか?

sizuma

Re:マリオ的な横スクロール

#3

投稿記事 by sizuma » 15年前

http://javagame.skr.jp/
ここは詳しそうかな。
コードはJavaだけど解説はしてるので参考になると。

kazuoniさんが書かれてるような方法みたいですね。
こういうのってまずは自分で考えて書いてみてから調べること推奨です。

SS

Re:マリオ的な横スクロール

#4

投稿記事 by SS » 15年前

回答ありがとうございます。
eclipseが起動しなかったんですが、改めてjava再インストールしたらできましたので、
ひとまずリンクのサイト参考にしてやってみます。

KEYONN_

Re:マリオ的な横スクロール

#5

投稿記事 by KEYONN_ » 15年前

当たり判定はともかく、スクロールだけならこれで十分だと思います。

void DrawChip(int Number,int x,int y)
{
int Dx=ChipSize*(Number%22);
int Dy=ChipSize*(Number/22);
DrawRectGraph(x,y,Dx,Dy,ChipSize,ChipSize,GraphHandle,TRUE,FALSE);
}

void DrawBG()
{
int StartX,StartY,EndX,EndY;
StartX=ScrollX/ChipSize;
StartY=ScrollY/ChipSize;
EndX=(ScrollX+ScreenWidth-1)/ChipSize;
EndY=(ScrollY+ScreenHeight-1)/ChipSize;

for(i=StartY;i<EndY;i++)
{
for(j=StartX;j<EndX;j++)
{
DrawChip(Map[j],j*ChipSize-ScrollX,i*ChipSize-ScrollY);
}
}
}

void CalcScroll()
{
ScrollX=Jiki.X-(ScreenWidth/2);
int MapWidth=ChipSize*200; //マップの幅
int MapHeight=ChipSize*30; //マップの高さ

if(ScrollX<0) ScrollX=0;//左に来た時
if(ScrollX>MapWidth-ScreenWidth) ScrollX=MapWidth-ScreenWidth;
//右に来た時

if(ScrollY<0) ScrollY=0;//上に来た時
if(ScrollY>MapHeight-ScreenHeight)ScrollY=MapHeight-ScreenHeight;
//下に来た時
}

dic

Re:マリオ的な横スクロール

#6

投稿記事 by dic » 15年前

私の場合だと 最初に全体の座標を定義して、
表示するのはその一部分って考えでしょうかね

SS

Re:マリオ的な横スクロール

#7

投稿記事 by SS » 15年前

TKOZさん、dicさんありがとうございます。
普段「なるほど」なんて言わないんですが、本当になるほどと思いました。
TKOZさんのコードをみてやっと意味がわかりました、ありがとうございます。
とりあえず今のところキャラの座標固定で、マップ、敵、弾などはキー入力からの値に依存するようにしたのですが、また助言を参考にして研究してみます。

situmon

Re:マリオ的な横スクロール

#8

投稿記事 by situmon » 15年前

えっと、もう解決されたかもしれませんが、
DXライブラリのサンプルプログラミングに、マップスクロール基本についてのってます。
以外に自分の知りたいことがのってたりします。

閉鎖

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