タメショットについて
Posted: 2009年5月26日(火) 09:04
お世話になっております;
横STGの製作をしており8割方完成して
もうゴールが見えている状況なのですが・・・;
自機の攻撃パターンにタメ技を加えようと考え
龍神録様のcshot.cppを改良し考えていたのですが
添付ファイルのような波を画くような動きを
してくれません。
自分としては下記の通常ショットもしくは、
ショットの移動計算を変更すればうまく行きそうな
気がしなくもありません。
tshot[k].angleのPIの値を弄ってみましたが
あまり変化が見られませんでした;;
誰かお分かりになる方が居られましたら
ご教授ください;;
後、これをタメショット(5秒間ボタンを押す→離すと発射!の様な)
にするにはどのような
手順を踏めばよいのでしょうか?
質問ばかりで恐縮なのですが、
教えていただけると幸いです。
//通常ショット登録
void ch0_tshot_pattern(){
int k,d,c1;
int n=tshot0num[ch.power<30?0:1];
for(int i=0;i<n;i++){
if((k=search_tshot())!=-1){
tshot[k].flag=1;
tshot[k].cnt=0;
tshot[k].angle=PI/2;
// tshot[k].vx=3;
// tshot[k].vy=0.5+cos(PI*(tshot.cnt+60.0f)/80.0f)*2.0f;
tshot[k].spd=10;
tshot[k].y=ch.y+tshot0pos_y;
tshot[k].x=ch.x+tshot0pos_x;
tshot[k].power= (n<2 ? 200 : 120) +ch.power/100;//2筋なら20,4筋なら12(50)
tshot[k].knd=0;
tshot[k].img=img_tshot[0];//画像番号代入(49)
}
}
}
//ショットの移動計算
void calc_tshot(){
for(int i=0;i<TSHOT_MAX;i++){
if(tshot.flag==1){
int dranx=tshot.spd+11/2,drany=tshot.spd+55/2;
if(tshot.knd==1)
tshot.y+=cos(tshot.angle)*tshot.spd;
tshot[i].x+=sin(tshot[i].angle)*tshot[i].spd;
tshot[i].cnt++;
if(tshot[i].y<-dranx || tshot[i].y>FMY+drany ||
tshot[i].x<-drany || tshot[i].x>FMX+dranx)//画面から外れたら
tshot[i].flag=0;
}
}
}
横STGの製作をしており8割方完成して
もうゴールが見えている状況なのですが・・・;
自機の攻撃パターンにタメ技を加えようと考え
龍神録様のcshot.cppを改良し考えていたのですが
添付ファイルのような波を画くような動きを
してくれません。
自分としては下記の通常ショットもしくは、
ショットの移動計算を変更すればうまく行きそうな
気がしなくもありません。
tshot[k].angleのPIの値を弄ってみましたが
あまり変化が見られませんでした;;
誰かお分かりになる方が居られましたら
ご教授ください;;
後、これをタメショット(5秒間ボタンを押す→離すと発射!の様な)
にするにはどのような
手順を踏めばよいのでしょうか?
質問ばかりで恐縮なのですが、
教えていただけると幸いです。
//通常ショット登録
void ch0_tshot_pattern(){
int k,d,c1;
int n=tshot0num[ch.power<30?0:1];
for(int i=0;i<n;i++){
if((k=search_tshot())!=-1){
tshot[k].flag=1;
tshot[k].cnt=0;
tshot[k].angle=PI/2;
// tshot[k].vx=3;
// tshot[k].vy=0.5+cos(PI*(tshot.cnt+60.0f)/80.0f)*2.0f;
tshot[k].spd=10;
tshot[k].y=ch.y+tshot0pos_y;
tshot[k].x=ch.x+tshot0pos_x;
tshot[k].power= (n<2 ? 200 : 120) +ch.power/100;//2筋なら20,4筋なら12(50)
tshot[k].knd=0;
tshot[k].img=img_tshot[0];//画像番号代入(49)
}
}
}
//ショットの移動計算
void calc_tshot(){
for(int i=0;i<TSHOT_MAX;i++){
if(tshot.flag==1){
int dranx=tshot.spd+11/2,drany=tshot.spd+55/2;
if(tshot.knd==1)
tshot.y+=cos(tshot.angle)*tshot.spd;
tshot[i].x+=sin(tshot[i].angle)*tshot[i].spd;
tshot[i].cnt++;
if(tshot[i].y<-dranx || tshot[i].y>FMY+drany ||
tshot[i].x<-drany || tshot[i].x>FMX+dranx)//画面から外れたら
tshot[i].flag=0;
}
}
}