ページ 11

龍神録 自機狙いで特攻させる方法を教えてください

Posted: 2015年7月14日(火) 17:23
by RON
龍神録で、雑魚敵に上から降りてきて、自機狙いで特攻させる...という
敵パターンを作りたいのですが、どうやればいいでしょうか?
よろしくお願いします。

Re: 龍神録 自機狙いで特攻させる方法を教えてください

Posted: 2015年7月14日(火) 18:11
by プラム
まず。龍神録というプログラムの仕組みを理解してみましょう。

コード:


//敵に関する構造体
typedef struct{

	int flag,cnt,pattern,muki,knd,hp,hp_max,item_n[6],img,back_col;  //フラグ、カウンタ、移動パターン、向き、敵の種類、HP最大値、落とすアイテム、背景色
	
        double x,y,vx,vy,sp,ang;	//座標、速度x成分、速度y成分、スピード、角度

	int bltime,blknd,blknd2,col,state,wtime,wait;	//弾幕開始時間、弾幕の種類、弾の種類、色、状態、待機時間、停滞時間

}enemy_t;

まず。角度と。移動成分をプレイヤー座標に向けるような処理をしましょう。その方向に前進していき。プレイヤーの座標を。何かに代入しておき。そこに向かって弾を発射すれば。それっぽくなると思います

Re: 龍神録 自機狙いで特攻させる方法を教えてください

Posted: 2015年7月15日(水) 17:41
by RON
ありがとうございます。色々と試してみましたが、結構難しいです。
>>まず。角度と。移動成分をプレイヤー座標に向けるような処理をしましょう。
ここを具体的にどうすればいいかいまいち分かりません。
すみませんが、分かる人がいたら、どうかよろしくお願いします。

Re: 龍神録 自機狙いで特攻させる方法を教えてください

Posted: 2015年7月15日(水) 17:53
by Rittai_3D
RON さんが書きました:ありがとうございます。色々と試してみましたが、結構難しいです。
>>まず。角度と。移動成分をプレイヤー座標に向けるような処理をしましょう。
ここを具体的にどうすればいいかいまいち分かりません。
移動成分というのは移動スピードのことでしょう。自機に向かう敵の移動速度です。
角度は、敵の位置とプレイヤーの位置が分かればatan2()で求められます。

Re: 龍神録 自機狙いで特攻させる方法を教えてください

Posted: 2015年7月16日(木) 11:12
by Tatu

コード:

void enemy_pattern0(int i){
    int t=enemy[i].cnt;
    if(t==0)
        enemy[i].vy=3;//下がってくる
    if(t==40)
        enemy[i].vy=0;//止まる
    if(t==40+enemy[i].wait){//登録された停滞時間だけして自機に向かって飛んでくる
		double angle=atan2(ch.y-enemy[i].y,ch.x-enemy[i].x);
		enemy[i].ang=angle;
		enemy[i].sp=7;
	}
}
または

コード:

void enemy_pattern0(int i){
    int t=enemy[i].cnt;
    if(t==0)
        enemy[i].vy=3;//下がってくる
    if(t==40)
        enemy[i].vy=0;//止まる
    if(t==40+enemy[i].wait){//登録された停滞時間だけして自機に向かって飛んでくる
		double angle=atan2(ch.y-enemy[i].y,ch.x-enemy[i].x);
		enemy[i].vx=7*cos(angle);
		enemy[i].vy=7*sin(angle);
	}
}
などのようにするとよいでしょう。

atanについてはこのサイトでは特に解説されていないので
検索するなどして調べてください。

sin、cosについてはこちらを参考にどうぞ。
http://dixq.net/g/h_06.html