レーザーの応用

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

レーザーの応用

#1

投稿記事 by PEACH-CELL » 13年前

34章まで見ました。わからないところがあります。

コード:

//レーザーのサンプル
void boss_shot_bulletH008(){
#define TM008 420
#define DIST 60//ボスから60離れたところからレーザーを放つ
	int i,j,k,s,t=boss_shot.cnt%TM008,t2=boss_shot.cnt;
	double angle;
	static int num;
	if(t2==0)num=4;
	if(t==0){
		for(j=0;j<1;j++){//レーザーの数、1だと1本、2だと1本と対の動きをするレーザーをもう一本
			for(i=0;i<1;i++){//レーザーの数?0だと0本、1だと1本、2だとレーザーが2本重なって描画される
				int plmn=(j ? -1 : 1);//条件演算子、jが真の場合-1、jが偽の場合1をplmnに代入
				if((k=search_lazer())!=-1){
					lazer[k].col      = 0;//弾の色
					lazer[k].knd      = 0;//弾の種類
					lazer[k].angle    = PI/3;//角度
					lazer[k].startpt.x= boss.x+cos(lazer[k].angle);//座標
					lazer[k].startpt.y= boss.y+sin(lazer[k].angle);
					lazer[k].flag     = 1;
					lazer[k].cnt      = 0;
					lazer[k].haba     = 2;//幅
					lazer[k].state    = j;//ステータス、ここの意味がよくわからない
					lazer[k].length   = 500;//レーザーの長さ
					lazer[k].hantei	  = 0;
					lazer[k].lphy.conv_flag=1;//回転フラグ
					lazer[k].lphy.conv_base_x=boss.x;//回転基準位置
					lazer[k].lphy.conv_base_y=boss.y;
					lazer[k].lphy.conv_x=lazer[k].startpt.x;//回転元の位置
					lazer[k].lphy.conv_y=lazer[k].startpt.y;
					input_lphy(&lazer[k],80,PI/num*plmn);//代入、ここの意味がよくわからない
				}
			}
		}
		se_flag[33]=1;
	}
//レーザー計算
	for(i=0;i<LAZER_MAX;i++){
		if(lazer[i].flag>0){
			int cnt=lazer[i].cnt;
			int state=lazer[i].state;
			if(state==0 || state==1){
				if(cnt==40){
					lazer[i].haba=30;//幅を30に
					lazer[i].hantei=1;//表示幅の判定範囲、0.5だと半分
				}
				if(cnt>=260 && cnt<=320){
					if(cnt==280)
						lazer[i].hantei=0;
					lazer[i].haba=10*(60-(cnt-260))/60.0;
					if(cnt==320)
						lazer[i].flag=0;
				}
			}
		}
	}
	if(t==TM008-1)
		num=(++num);
}
だいたいは理解できてきましたが
1、回転をさせないor途中で止める方法がわかりません。どうやって回転を止めるのでしょうか?
試しにレーザー計算のところにcnt==10のときlazer[k].lphy.conv_flag=0;にしてみたら動作が止まりました。
2、lazer[k].state = jの意味がよくわかりません。
3、input_lphy(&lazer[k],80,PI/num*plmn);の意味がよくわかりません。numをいじった結果、回転開始座標に関係しているらしいですが、plmnは回転の向き?これはどういった計算ですか?

今作りたいと思っているレーザーは回転→途中で止まる→回転再開というレーザーと時計回り1回転→消える→反時計回り1回転というレーザーです。
自由にレーザーを作れるようになるためにも、何方か、教えていただけないでしょうか?

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