一般的に「カメラ制御」と呼ばれているのかどうかはわかりませんが、今はここで詰まっています。
どなたかご助力いただければ幸いです。
今回やりたいと思っていたのは、ステージ上で、
自機をなるべくキャラクタを中心に描写する、というものです。
ただし、キャラクタを中心に描写することによって、ステージの「存在しない領域」まで描写領域に入っている場合、
ステージの方を優先とし、
「ステージの場外領域を描写しないようにする」
「キャラクタはそれに対応させて描写する」
という風にしたいのです。
(分かりにくくて申し訳ありません。)
後程記載するつもりですが、先にここで述べてしまいますと、
言語はCで、DXライブラリを用いています。
描写に用いる関数はDrawRotaGraph関数です。
ひとまず先に、簡単なカメラ制御のプログラムを描いてみました。
//キャラクタ関連の画面上位置計算を行い、描写する関数
int DrawGraphContCameraChar(int cx,int cy,int angle,int GrHandle,int TurnsFlag){
int x; //最終決定値
int CameraX = ch.x-(WIN_X/2); //カメラのX座標
const int FlipX = MAP_X - WIN_X; //カメラと画面の最大差分
if( CameraX<0 ) x = cx; //もし左端でスクロール不可なら、通常描写
else if( CameraX>FlipX ) x = cx - FlipX; //もし右端でスクロール不可なら、差分描写
else x = cx - CameraX; //スクロール可能範囲内なら、通常差分描写
return DrawRotaGraph( x,cy-120,1.0f,0,GrHandle,TurnsFlag,angle );
}
//背景の画面上位置計算を行い、描写する関数
int DrawGraphContCameraBack(int cx,int cy,int GrHandle,int TurnsFlag){
int x;
int CameraX = ch.x-(WIN_X/2);
const int FlipX = MAP_X - WIN_X;
if( CameraX<0 ) x = 0;
else if( CameraX>FlipX ) x = -FlipX;
else x = cx - CameraX;
return DrawGraph( x,cy,GrHandle,TurnsFlag );
}
これを調整して、うまい具合に描写できるようにコードを追加したいのですが、
ここからどうすればいいのかわかりません。
どなたか、考え方やヒント、サンプルとなるプログラム、もしくは参考サイトでも構いません。
どうかよろしくお願いします。
開発環境:VC++2008EE
ライブラリ:DXライブラリ
OS:Windows7 Professional