ページ 11

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

Posted: 2011年10月26日(水) 21:54
by LisetteLander
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つを描画時にあらゆるオブジェクトの座標から引きます。

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

Posted: 2011年10月26日(水) 23:58
by softya(ソフト屋)
完全に自機に回転が連動したら遊びづらい気もする・・・。あと酔いそう。

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

とりあえず、DrawRotaGraph2()で画像を回転描画する画像上の中心座標で自機を指せば、それらしく回転しませんかね?

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

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