スーパーファミコンのグラディウス3の追尾型オプションで、キャラクターの動きをトレースして動くオプションのアルゴリズムが思いつきません。
自機のx座標、y座標を常にバッファに格納して、そのバッファをオプションが読み込んでいくのだろうと考えていますが、プログラムでは、どのタイミングで読み込んだりしたら、いいのかなど、なかなか思いつきません。
カウント変数を作って、自機が動いたときだけ、バッファに格納して、止まっているときはバッファに格納しないようにするようにカウントを工夫するなどが考えていますが・・・。
ご教授願います。
追尾型オプションのアルゴリズム
Re:追尾型オプションのアルゴリズム
double arrX[50];
double arrY[50];
というような過去座標を保持する変数を持たせておき
option1.x = arrX[ 10 ];
option1.y = arrY[ 10 ];
option2.x = arrX[ 20 ];
option2.y = arrY[ 20 ];
みたいな感じにしておくとプレイヤーが動くたびに座標が更新されるのでカウントとか気にしないで済みます。
初期化時は0~49にプレイヤー座標を詰めるのをお忘れなく。
double arrY[50];
というような過去座標を保持する変数を持たせておき
// 0.1ドット以上動いたら if( fabs( player.x - arrX[0] ) > 0.1 || fabs( player.y - arrY[0] ) > 0.1 ) { for( int ii = 0; ii < 50; ii++ ){ int idx = 50 - ii - 1; arrX[ idx ] = arrX[ idx - 1 ]; arrY[ idx ] = arrY[ idx - 1 ]; } arrX[ 0 ] = player.x; arrY[ 0 ] = player.y; }とりあえず50個分くらい保持しておいて
option1.x = arrX[ 10 ];
option1.y = arrY[ 10 ];
option2.x = arrX[ 20 ];
option2.y = arrY[ 20 ];
みたいな感じにしておくとプレイヤーが動くたびに座標が更新されるのでカウントとか気にしないで済みます。
初期化時は0~49にプレイヤー座標を詰めるのをお忘れなく。