追尾型オプションのアルゴリズム

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

追尾型オプションのアルゴリズム

#1

投稿記事 by ちゃお » 16年前

スーパーファミコンのグラディウス3の追尾型オプションで、キャラクターの動きをトレースして動くオプションのアルゴリズムが思いつきません。

自機のx座標、y座標を常にバッファに格納して、そのバッファをオプションが読み込んでいくのだろうと考えていますが、プログラムでは、どのタイミングで読み込んだりしたら、いいのかなど、なかなか思いつきません。

カウント変数を作って、自機が動いたときだけ、バッファに格納して、止まっているときはバッファに格納しないようにするようにカウントを工夫するなどが考えていますが・・・。

ご教授願います。

ねこ

Re:追尾型オプションのアルゴリズム

#2

投稿記事 by ねこ » 16年前

double arrX[50];
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にプレイヤー座標を詰めるのをお忘れなく。

ちゃお

Re:追尾型オプションのアルゴリズム

#3

投稿記事 by ちゃお » 16年前

ねこさんありがとうございます。

プログラム使わせていただきました。
思ったとおりの動きになりました。
すごいです。

最高です。

ちゃお

Re:追尾型オプションのアルゴリズム

#4

投稿記事 by ちゃお » 16年前

解決しました。

閉鎖

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