自機の向きにショットが動いてしまう
Posted: 2011年7月02日(土) 11:45
はじめまして、よろしくお願いします。まだまだ初心者です
現在龍神縁プログラミングの館を参考に全方位STGを作ろうと試みているのですが
17章の「自機にショットを撃たせて見よう」で悩んでいます。
掲示板の他のトピック等を参考にし、取りあえずキャラが向いている上下左右に弾が出てくれるですが
弾が出ている状態でキャラの向きを変えると、弾もキャラの向きの方へ動いていってしまいます。
多分cshot.cppのショットの移動計算が問題だと思うのですが、整数に変えたりしてもやっぱり連動してしまいます。
どうすれば発射時の方向に最後まで飛ばせるのでしょうか?
8方向移動のためにchar.cppは多少変更していますが、他は龍神録そのままです。
アドバイスを頂ける方がおられましたらよろしくお願いします。
以下はcshot.cpp変更部分です。
現在龍神縁プログラミングの館を参考に全方位STGを作ろうと試みているのですが
17章の「自機にショットを撃たせて見よう」で悩んでいます。
掲示板の他のトピック等を参考にし、取りあえずキャラが向いている上下左右に弾が出てくれるですが
弾が出ている状態でキャラの向きを変えると、弾もキャラの向きの方へ動いていってしまいます。
多分cshot.cppのショットの移動計算が問題だと思うのですが、整数に変えたりしてもやっぱり連動してしまいます。
どうすれば発射時の方向に最後まで飛ばせるのでしょうか?
8方向移動のためにchar.cppは多少変更していますが、他は龍神録そのままです。
アドバイスを頂ける方がおられましたらよろしくお願いします。
以下はcshot.cpp変更部分です。
//ショットの移動計算
void calc_cshot(){
for(int i=0;i<CSHOT_MAX;i++){
if(cshot[i].flag==1){
cshot[i].muki=ch.muki; //自機の向きをショットの向きに代入
int dranx=cshot[i].spd+11/2,drany=cshot[i].spd+55/2;
if(cshot[i].muki==2){ //正面だったら
cshot[i].x+=cos(cshot[i].angle)*cshot[i].spd;
cshot[i].y+=sin(cshot[i].angle)*cshot[i].spd;
}
else if(cshot[i].muki==0){ //左だったら
cshot[i].x+=cos(270*cshot[i].angle)*cshot[i].spd;
cshot[i].y+=sin(270*cshot[i].angle)*cshot[i].spd;
}
else if(cshot[i].muki==1){ //右だったら
cshot[i].x+=cos(180*cshot[i].angle)*cshot[i].spd;
cshot[i].y+=sin(180*cshot[i].angle)*cshot[i].spd;
}
else if(cshot[i].muki==3){ //下だったら
cshot[i].x+=cos(-cshot[i].angle)*cshot[i].spd;
cshot[i].y+=sin(-cshot[i].angle)*cshot[i].spd;
}
cshot[i].cnt++;
if(cshot[i].x<-dranx || cshot[i].x>FIELD_MAX_X+dranx ||
cshot[i].y<-drany || cshot[i].y>FIELD_MAX_Y+drany) //画面から外れたら
cshot[i].flag=0;
}
}
}