ページ 1 / 1
自機と敵機の角度
Posted: 2010年10月10日(日) 11:08
by Ultimate
弾幕を作っていて、敵に自機狙いショットを打たせたいのですが、下の部分に何かおかしい点があるようです。
どこが間違えているのでしょうか?
tmain2.r[/url]はラジアンを入れる変数です。
tmain2.coscos[/url]はコサインを入れる変数
tmain2.sinsin[/url]はサインを入れる変数
tmain2.r=atan2(tmain2.ty-jiki.ty,tmain2.tx-jiki.tx);
tmain2.coscos=cos(tmain2.r);
tmain2.sinsin=sin(tmain2.r);
Re:自機と敵機の角度
Posted: 2010年10月10日(日) 11:09
by Ultimate
追加
tmain2.tyは自機のY座標
jiki.tyはは敵機のY座標
tmain2.txは自機のX座標
jiki.txは敵機のX座標
Re:自機と敵機の角度
Posted: 2010年10月10日(日) 11:13
by みけCAT
コードが少なすぎるので確証はできません。
tmain2.ty-jiki.ty
を
jiki.ty-tmain2.ty
にしてみてください。
Re:自機と敵機の角度
Posted: 2010年10月10日(日) 11:18
by Ultimate
すみませんが、うまく動きません。
もっと広い範囲のソースを載せます。
//敵2
typedef struct{
double x[50]; //X座標
double y[50]; //Y座標
double tsin,tcos,tr;
double r[10],sinsin[10],coscos[10];//ラジアン,サイン,コサイン
int flag; //フラグ
int tflag[50];
int nagasa[50];
int count; //カウント
int count2;
double tx;
double ty;
int tcounter;
int hp;
}t2;
t2 tmain2;
//自機
typedef struct{
double tx; //X座標
double ty; //Y座標
double x[100];
double y[100];
double x2[100];
double y2[100];
int flag[100];
int hp;
int nagasa[100];
int count;
}jstruct;
jstruct jiki;
//中略//
//敵2/////////////////
if(tmain2.hp>0&&tmain1.hp<=0){
DrawGraph(tmain2.tx,tmain2.ty,tmain,TRUE);
if(tmain2.count<100){
tmain2.ty++;
}
tmain2.count++;
if(tmain2.count2<10){
tmain2.count2++;
}
for(i=0;i<50;i++){
if(tmain2.tflag==0){
tmain2.x=tmain2.tx;
tmain2.y=tmain2.ty;
}
}
if(tmain2.count2>=10){
tmain2.count-0;
for(i=0;i<50;i++){
if(tmain2.tflag==0){
tmain2.tflag=1;
//サインコサイン
tmain2.r=atan2(jiki.ty-tmain2.ty,tmain2.tx-jiki.tx);
tmain2.coscos=cos(tmain2.r);
tmain2.sinsin=sin(tmain2.r);
break;
}
}
}
for(i=0;i<50;i++){
if(tmain2.tflag[i]==1){
tmain2.nagasa[i]+=10;
tmain2.x[i]=tmain2.nagasa[i]*tmain2.coscos[i];
tmain2.y[i]=tmain2.nagasa[i]*tmain2.sinsin[i];
DrawCircle(tmain2.x[i],tmain2.y[i],3,BLACK,TRUE);
}
}
DrawFormatString(0,0,BLACK,"%d",tmain2.tflag[0]);
}
Re:自機と敵機の角度
Posted: 2010年10月10日(日) 11:19
by みけCAT
No.63093について
自機と敵機が逆ではありませんか?
勘違いだったらすみません。
Re:自機と敵機の角度
Posted: 2010年10月10日(日) 11:22
by Ultimate
訂正
tmain2.tyは敵機のY座標
jiki.tyはは自機のY座標
tmain2.txは敵機のX座標
jiki.txは自機のX座標
逆でした。。。
Re:自機と敵機の角度
Posted: 2010年10月10日(日) 12:01
by Ultimate
引き続き回答をお願いします。
Re:自機と敵機の角度
Posted: 2010年10月10日(日) 13:03
by みけCAT
double r[10],sinsin[10],coscos[10];//ラジアン,サイン,コサイン
というように要素を10しか確保していないのに、
for(i=0;i<50;i++){
if(tmain2.tflag==0){
tmain2.tflag=1;
//サインコサイン
tmain2.r=atan2(jiki.ty-tmain2.ty,tmain2.tx-jiki.tx);
tmain2.coscos=cos(tmain2.r);
tmain2.sinsin=sin(tmain2.r);
break;
}
}
というようにそれより大きい要素にアクセスしているためデータが壊れていると思います。
Re:自機と敵機の角度
Posted: 2010年10月10日(日) 13:08
by みけCAT
このようなことをしたいのでしょうか?
Re:自機と敵機の角度
Posted: 2010年10月10日(日) 15:34
by Ultiamte
ご指摘いただいた通りの初歩的なミスでした。
あとは細かな調整などをして成功しました。
ありがとうございました。