2Dの全方位シューティングで画面アングルを変更したいです。

フォーラム(掲示板)ルール
フォーラム(掲示板)ルールはこちら  ※コードを貼り付ける場合は [code][/code] で囲って下さい。詳しくはこちら
アバター
LisetteLander
記事: 147
登録日時: 14年前
住所: 東京

2Dの全方位シューティングで画面アングルを変更したいです。

#1

投稿記事 by LisetteLander » 14年前

2Dの全方位シューティングで画面の上下左右スクロールを作ったのですが
臨場感にかけていたので画面のアングルを自機に依存するようにしたいです。

添付されている画像を見てもらえればわかると思いますが
中心の右上に向いている自機が敵や味方との相対座標や現在の絶対座標をそのままに上をむくようにしたいのです。

そうすると、あらゆるオブジェクト(ユニット、弾など)を自機の角度に依存した座標で描画することになります。
しかし、例えば自機が回転するとそれにあわせて太陽や月みたいにクルクル回るコードが思いつきません。
アドバイスをお願いします。

コード:

void window_main(){
	if(unit_status[0].unit_member[0].flag==1){//status[0].mem[0](つまり自機)が生きていたらウィンドウ幅/2だけプレイヤー座標から引き、それを現在の描画基準座標とする。
		window_coordinate.x = unit_status[0].unit_member[0].x - X_WINDOW_MAX/2;
		window_coordinate.y = unit_status[0].unit_member[0].y - Y_WINDOW_MAX/2;
	}else{//死んでる場合は適当に生きている味方ユニットを探索して表示する。全滅していた場合はしらない。
		for(int i=UNIT_MEMBER_MAX;0<=i;i--){
		window_coordinate.x = unit_status[0].unit_member[i].x - X_WINDOW_MAX/2;
		window_coordinate.y = unit_status[0].unit_member[i].y - Y_WINDOW_MAX/2;
		if(unit_status[0].unit_member[i].flag==1)break;
		}
	}
}
※window_coordinate.xとwindow_coordinate.yは描画基準座標です。この2つを描画時にあらゆるオブジェクトの座標から引きます。
添付ファイル
無題.PNG

アバター
softya(ソフト屋)
副管理人
記事: 11677
登録日時: 15年前
住所: 東海地方
連絡を取る:

Re: 2Dの全方位シューティングで画面アングルを変更したいです。

#2

投稿記事 by softya(ソフト屋) » 14年前

完全に自機に回転が連動したら遊びづらい気もする・・・。あと酔いそう。

参考。
「アサルト(ASSAULT) - YouTube」
[youtube][/youtube]

とりあえず、DrawRotaGraph2()で画像を回転描画する画像上の中心座標で自機を指せば、それらしく回転しませんかね?
by softya(ソフト屋) 方針:私は仕組み・考え方を理解して欲しいので直接的なコードを回答することはまれですので、すぐコードがほしい方はその旨をご明記下さい。私以外の方と交代したいと思います(代わりの方がいる保証は出来かねます)。

アバター
LisetteLander
記事: 147
登録日時: 14年前
住所: 東京

Re: 2Dの全方位シューティングで画面アングルを変更したいです。

#3

投稿記事 by LisetteLander » 14年前

確かに移動速度が低いとやりづらいかもしれないですね・・
一応爽快感?を求めていたので、フィールドを10倍の広さに、移動速度を5倍にすれば遊べる範囲になるのかなと・・・
(レーダーは実装済みで、旋回速度も低いままならば戦闘機っぽくなる?)

閉鎖

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