FAQ:敵弾、自機を狙う弾

シューティングゲームでは三角関数が必須だ。
小学生は運良く気が付かないと自機を狙う弾を発射できず挫折する。
なのでせっかくだから小学生でもわかるようなメモとして書いておく。
これと同じことを述べているサイトは100個以上あるかもしれないが。
☆☆☆☆☆☆
何も知らなくても、結論的には、

	double speed = 4.2;
	double tama_no_kakudo = atan2(player_y - teki_y, player_x - teki_x);
	// ↑これが敵から自機への「方向」になる。
	double vx, vy; // 弾の速度
	vx = cos(tama_no_kakudo) * speed;
	vy = sin(tama_no_kakudo) * speed;
	// ↑これが「方向」に向かってspeedの速さで移動する「速度」になる。

とか書く、と覚えれば基礎は問題ない。
☆☆☆☆☆☆
atan2(y,x) はラジアンとかいう角度を表す為の形式をかえしてくれる。
ラジアンの0が x=1, y=0を指す角度つまり真っ直ぐ右方向をさし、
π*2で一周となっている。
つまり、
π(3.14...)が、真っ直ぐ左、
π*0.5(= π/2) が、 x=0, y=1で真下、
π*1.5(= π+π/2)は真上
のように回転する。
☆☆☆☆☆☆
狙った点からズレた弾、いわゆる3ウェイや5ウェイの弾は、
このラジアンで表される角度にてきとうに加減すればいい。
例えば30度(半周の1/6)の2ウェイ弾の角度は以下のようになる。

	kakudo1 = tama_no_kakudo - PI / 6;
	kakudo2 = tama_no_kakudo + PI / 6;