ページ 11

DXライブラリ STGのショットについて

Posted: 2011年9月02日(金) 01:55
by C2
CとDXライブラリでSTGを作っているのですがショット部分がうまくいかないのでご指南ください。
仕様としては
・240ドット進んだら消失
・2秒以上押した状態からキーを離すとチャージショット
としたいのですが

以下の点で困っています
・キーを離した後、キャラを(上下に)動かすと弾の飛距離が変わってしまう。
・弾が飛んでる時にキーを押すと弾が消失+位置が固定されてキーを離すまで弾が出てこない。
・チャージショットが全くわからない

(例:if(SHOT() > 120) とすれば2秒以上押されれたら)

コード:

 
void PlayerShot(){
	double distance = 0 ; // 弾の距離//
	int spd = 5;                //弾の速度//


    if(SHOT()==1 &&  PlayerBullet.flag==0){		//フラグ=0でZキーが押されたら//
		PlayerBullet.flag = 1;
		PlayerBullet.x = sub_p.x;
		PlayerBullet.y = sub_p.y+20;
	}

	if( PlayerBullet.flag == 1 ){
		if(SHOT()==0){
		distance = PlayerBullet.y - sub_p.y;
		if(distance > -240){					
		PlayerBullet.y -= spd;
			DrawGraph(PlayerBullet.x+20,PlayerBullet.y-18,img_player_shot1[0],TRUE);
		}else{
			PlayerBullet.flag = 0;
			distance = 0;
         }
       }
      }
 }

Re: DXライブラリ STGのショットについて

Posted: 2011年9月02日(金) 10:13
by h2so5
SHOT()の仕様が分からないのでZキーが押されていると1を返す関数と仮定します。

・キーを離した後、キャラを(上下に)動かすと弾の飛距離が変わってしまう。
弾を発射した時点の座標を記録しするか、弾を移動するたびに移動量を何らかの変数にカウントして距離を計算します。

・弾が飛んでる時にキーを押すと弾が消失+位置が固定されてキーを離すまで弾が出てこない。
14行目の if(SHOT()==0){ が不要だと思います。

・チャージショットが全くわからない
キーが押されている間、変数powerをカウントアップしておいて
キーが離された時点(SHOT()==0)で 0 < power < 120 なら通常ショット 120 <= power ならチャージショット