//レーザーのサンプル
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回転というレーザーです。
自由にレーザーを作れるようになるためにも、何方か、教えていただけないでしょうか?