只今、龍神録様のコードを応用して横STGを
製作中です。
一難さってまた一難です;;
敵キャラと自機との当たり判定を加えたい
龍神録のソースにもあるout.cppを変更して
行おうと頑張っているのですが、中々
うまく回ってくれません;;
そして下記のクリックしても飛ばない
エラーメッセージ×11がどうにも消えません;;
(そのまま貼り付けで申し訳ありません)
判る方が居られましたら、ご教授ください。
お願いします。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_packet_iskeyframe が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_init が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_comment_init が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_info_init が関数 "int __cdecl TheoraDecode_InitializeStream(struct tagSTREAMDATASHREDTYPE2 *,int,int)" (?TheoraDecode_InitializeStream@@YAHPAUtagSTREAMDATASHREDTYPE2@@HH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_info_clear が関数 "int __cdecl TheoraDecode_Terminate(int)" (?TheoraDecode_Terminate@@YAHH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_comment_clear が関数 "int __cdecl TheoraDecode_Terminate(int)" (?TheoraDecode_Terminate@@YAHH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_clear が関数 "int __cdecl TheoraDecode_Terminate(int)" (?TheoraDecode_Terminate@@YAHH@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_header が関数 "int __cdecl TheoraDecode_ReadHeader(struct tagDECODE_THEORA *)" (?TheoraDecode_ReadHeader@@YAHPAUtagDECODE_THEORA@@@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_YUVout が関数 "unsigned long __stdcall TheoraDecode_Thread(void *)" (?TheoraDecode_Thread@@YGKPAX@Z) で参照されました。
1>DxUseCLib_d.lib(DxUseCLibOgg.obj) : error LNK2019: 未解決の外部シンボル _theora_decode_packetin が関数 "int __cdecl _TheoraDecode_IncToFrame(int,int)" (?_TheoraDecode_IncToFrame@@YAHHH@Z) で参照されました。
1>D:\c++\mikudius\miku3\Debug\miku3.exe : fatal error LNK1120: 外部参照 10 が未解決です。
自機と敵の当たり判定について
Re:自機と敵の当たり判定について
こちらは参考になりますか?
C言語何でも質問掲示板
ttp://www.play21.jp/board/formz.cgi?action=res&resno=33334&page=&id=dixq&rln=33645
C言語何でも質問掲示板
ttp://www.play21.jp/board/formz.cgi?action=res&resno=33334&page=&id=dixq&rln=33645
Re:自機と敵の当たり判定について
Justyさんのおかげで、先ほどの
エラーがやっと消えてくれました。
これでやっと本来の当たり判定の質問に戻る事が出来す;;
改めて、下記の※1を※2の様に
変更してみたのですが、?の部分と
後どの部分を変更すれば良いのでしょうか?
※1 敵と自機ショットが当たったかどうかを判定する
int out_judge_cshot(int i,int s){
if(cshot.cnt>0){//ショットの軌道が1度でも計算されていたら
if(out_judge(cshot.x,cshot.y,enemy.x,enemy.y,
cshot_range[cshot.knd],enemy_range[enemy.knd],
cshot.spd,cshot.angle)){
return 1;
}
}
return 0;
}
※2 敵と自機の当たり判定
int out_judge_enemy_ch(int i,int s){
if(???????.cnt>0){
if(out_judge(ch.x,ch.y,enemy.x,enemy.y,
CRANGE,enemy_range[enemy.knd],???????.spd,????????.angle)){
return 1;
}
}
return 0;
}
如何なものでしょうか?
エラーがやっと消えてくれました。
これでやっと本来の当たり判定の質問に戻る事が出来す;;
改めて、下記の※1を※2の様に
変更してみたのですが、?の部分と
後どの部分を変更すれば良いのでしょうか?
※1 敵と自機ショットが当たったかどうかを判定する
int out_judge_cshot(int i,int s){
if(cshot.cnt>0){//ショットの軌道が1度でも計算されていたら
if(out_judge(cshot.x,cshot.y,enemy.x,enemy.y,
cshot_range[cshot.knd],enemy_range[enemy.knd],
cshot.spd,cshot.angle)){
return 1;
}
}
return 0;
}
※2 敵と自機の当たり判定
int out_judge_enemy_ch(int i,int s){
if(???????.cnt>0){
if(out_judge(ch.x,ch.y,enemy.x,enemy.y,
CRANGE,enemy_range[enemy.knd],???????.spd,????????.angle)){
return 1;
}
}
return 0;
}
如何なものでしょうか?
Re:自機と敵の当たり判定について
自分はこんな感じでやりました。
おかしな部分があるかもしれないので、あくまでも参考程度に…
あとout_main関数にenemy_and_ch();を加えてください。
おかしな部分があるかもしれないので、あくまでも参考程度に…
あとout_main関数にenemy_and_ch();を加えてください。
//敵と自機との処理 void enemy_and_ch(){ int i; double r; if(ch.flag == 0){ for(i=0;i<ENEMY_MAX;i++){ if(enemy.flag == 1){ r = (ch.x-enemy.x-FIELD_X)*(ch.x-enemy.x-FIELD_X)+(ch.y-enemy.y-FIELD_Y)*(ch.y-enemy.y-FIELD_Y); if((enemy_range[enemy.knd]+CRANGE)*(enemy_range[enemy.knd]+CRANGE)>r){ enemy.flag = 0; enter_del_effect(i); if(ch.flag==0 && ch.mutekicnt==0){//ステータスが通常で、無敵じゃなかったら ch.flag =2; //1:喰らいボム受付中 2:死んで浮き上がり中 ch.cnt =0; se_flag[6]=1; return; } } } } } }