自機と敵機の角度

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

自機と敵機の角度

#1

投稿記事 by Ultimate » 15年前

弾幕を作っていて、敵に自機狙いショットを打たせたいのですが、下の部分に何かおかしい点があるようです。

どこが間違えているのでしょうか?

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);

Ultimate

Re:自機と敵機の角度

#2

投稿記事 by Ultimate » 15年前

追加

tmain2.tyは自機のY座標
jiki.tyはは敵機のY座標
tmain2.txは自機のX座標
jiki.txは敵機のX座標

みけCAT

Re:自機と敵機の角度

#3

投稿記事 by みけCAT » 15年前

コードが少なすぎるので確証はできません。
tmain2.ty-jiki.ty

jiki.ty-tmain2.ty
にしてみてください。

Ultimate

Re:自機と敵機の角度

#4

投稿記事 by Ultimate » 15年前

すみませんが、うまく動きません。
もっと広い範囲のソースを載せます。

//敵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]);


}

みけCAT

Re:自機と敵機の角度

#5

投稿記事 by みけCAT » 15年前

No.63093について
自機と敵機が逆ではありませんか?
勘違いだったらすみません。

Ultimate

Re:自機と敵機の角度

#6

投稿記事 by Ultimate » 15年前

訂正

tmain2.tyは敵機のY座標
jiki.tyはは自機のY座標
tmain2.txは敵機のX座標
jiki.txは自機のX座標


逆でした。。。

Ultimate

Re:自機と敵機の角度

#7

投稿記事 by Ultimate » 15年前

引き続き回答をお願いします。

みけCAT

Re:自機と敵機の角度

#8

投稿記事 by みけCAT » 15年前

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; 
                            } 
                        }

というようにそれより大きい要素にアクセスしているためデータが壊れていると思います。

みけCAT

Re:自機と敵機の角度

#9

投稿記事 by みけCAT » 15年前

このようなことをしたいのでしょうか?

Ultiamte

Re:自機と敵機の角度

#10

投稿記事 by Ultiamte » 15年前

ご指摘いただいた通りの初歩的なミスでした。

あとは細かな調整などをして成功しました。

ありがとうございました。

閉鎖

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