ゲームのアルゴリズムを教えて管saiat GAMEDEVゲームのアルゴリズムを教えて管sai - 暇つぶし2ch■コピペモード□スレを通常表示□オプションモード□このスレッドのURL■項目テキスト61:名前は開発中のものです。 05/06/15 16:02:04 J79aeXl5.net ●スクロールは、常にメインキャラクターを画面の中心に置いておきたい訳だから void CalcScroll(int *sx,int *sy) { *sx=mx-320/2; *sy=my-240/2; if (sx<0) sx=0; if (sy<0) sy=0; if (sx>32*200) sx=32*200; if (sy>32*200) sy=32*200; } だったかな… ちなみにmx,myはメインキャラクターのx,y座標 62:名前は開発中のものです。 05/06/15 16:54:50 J79aeXl5.net 当たり判定は、いろいろな方法(ベクトル、三平方、色判定など)があるけども、 メインキャラクターが発射した弾と敵キャラとの当たり判定なら、単純に矩形(くけい)の 当たり判定で済みます。 ●弾の座標を(ax,ay)、敵の座標を(bx,by)とした場合、 if(ax<bx2 && ax2>bx && ay<by2 && ay2>by) { } で当たっているか、否かが分かります。 63:名前は開発中のものです。 05/06/15 16:55:21 J79aeXl5.net ●メインキャラクターとマップとの当たり判定は、 □x座標の移動処理の直後に //左上と左下 if(Map[x/32][y/32]!=0 || Map[x/32,(y+height)/32]!=0) { x=(x/32+1)*32; } //右上と右下 if(Map[(x+width)/32,y/32]!=0 || Map[(x+width)/32,(y+height)/32]!=0) { x=(x/32)*32; } で □y座標の移動処理の直後に //左上と右上 If(Map[x/32,y/32]!=0 || Map[(x+31)/32,y/32]!=0) { y=(y/32+1)*32; } //左下と右下 If(Map[x/32,(y+31)/32]!=0 || Map[(x+31)/32,(y+31)/32)!=0 { y=(y/32)*32; } とやればできます。どうしてそうなるのかは、 計算式を参考に図を書いてみれば分かると思います。 次ページ最新レス表示レスジャンプ類似スレ一覧スレッドの検索話題のニュースおまかせリストオプションしおりを挟むスレッドに書込スレッドの一覧暇つぶし2ch