5発、自機の周りからショットを出し、
(自機のx座標,自機のy座標から-100)の座標めがけて
集約したいと考え、
double cshotatan2(int k){
return atan2(cshot[k].x-ch.x,cshot[k].y-(ch.y-100));
}
void ch_pattern_Nomal(){
int k;
for(int i=0;i<cshot0num[ch.power<200?0:1];i++){
if((k=search_cshot())!=-1){
cshot[k].flag=1;
cshot[k].cnt=0;
cshot[k].spd=20;
cshot[k].x=ch.x+cshot0pos_x/3;
cshot[k].y=ch.y+cshot0pos_y;
cshot[k].angle=cshotatan2(k);
cshot[k].power=23;
cshot[k].knd=0;
}
}
se_flag[2]=1;
}
のようなコードにしたのですが、実行するとななめ左にショットが行ってしまいます。
敵の自機狙いは、自機と敵ショットの角度をとればいいように、
焦点をさだめ、そこに狙いをつけるにはどうしたらいいか
助言がいただけたらと思います。
簡易の状況の絵を一応添付しておきます。
自機ショットのある焦点への集約
Re:自機ショットのある焦点への集約
試してはいません。
龍神録33章のboss_shot.cppを参考にしてみました。
cshotatan2関数をこのようにしたらどうなりますか?
龍神録33章のboss_shot.cppは下の関数に近い状態になっています。
具体的にはbossatan3関数を参考にしました。
龍神録33章のboss_shot.cppを参考にしてみました。
cshotatan2関数をこのようにしたらどうなりますか?
double cshotatan2(int k){ return atan2(cshot[k].y-(ch.y-100),cshot[k].x-ch.x); } または double cshotatan2(int k){ return atan2((ch.y-100)-cshot[k].y,ch.x-cshot[k].x); }追記
龍神録33章のboss_shot.cppは下の関数に近い状態になっています。
具体的にはbossatan3関数を参考にしました。

Re:自機ショットのある焦点への集約
回答感謝します。
しかし、画像のように、
y軸の正の方向へ拡散するようなショットになってしまいました。
実装としては、龍神録49章の
double option0ang[4] = {-PI/2,-PI/2,-PI/2-PI/4,-PI/2+PI/4};//オプションの発射角度(49)
のように角度を個別指定して収束するようにさせることはできます。
ただ、やはり一点収束ができないのはなぜか気になります。
しかし、画像のように、
y軸の正の方向へ拡散するようなショットになってしまいました。
実装としては、龍神録49章の
double option0ang[4] = {-PI/2,-PI/2,-PI/2-PI/4,-PI/2+PI/4};//オプションの発射角度(49)
のように角度を個別指定して収束するようにさせることはできます。
ただ、やはり一点収束ができないのはなぜか気になります。
Re:自機ショットのある焦点への集約
できました!!
本当に感謝です。
もしよろしければ、なぜ、atan2(x,y)のyとxを変えて、PIを
加えれば良いのかの理由を教えてください。
ヒントでもいいのでお願いします。
本当に感謝です。
もしよろしければ、なぜ、atan2(x,y)のyとxを変えて、PIを
加えれば良いのかの理由を教えてください。
ヒントでもいいのでお願いします。
