ページ 11

自機と敵の当たり判定について

Posted: 2009年5月18日(月) 23:25
by Huzzy
只今、龍神録様のコードを応用して横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:自機と敵の当たり判定について

Posted: 2009年5月19日(火) 00:20
by Justy
 こちらは参考になりますか?

C言語何でも質問掲示板
ttp://www.play21.jp/board/formz.cgi?action=res&resno=33334&page=&id=dixq&rln=33645

Re:自機と敵の当たり判定について

Posted: 2009年5月19日(火) 22:19
by Huzzy
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;
}

如何なものでしょうか?

Re:自機と敵の当たり判定について

Posted: 2009年5月20日(水) 15:54
by pooka
自分はこんな感じでやりました。
おかしな部分があるかもしれないので、あくまでも参考程度に…
あと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;
					}
				}
			}
		}
	}
}