私は、波状のパターンでマウスに向かって弾丸を弾くようにしています。私は弾丸を波状のパターンで動かすことができます(しかし、私が予測した方法ではありませんでしたが)。2次元の波ベクトル
Vector2 BulletFun::sine(Vector2 vec) {
float w = (2 * PI)/1000; // Where 1000 is the period
float waveNum = (2 * PI)/5; // Where 5 is the wavelength
Vector2 k(0.0F, waveNum);
float t = k.dot(vec) - (w * _time);
float x = 5 * cos(t); // Where 5 is the amplitude
float y = 5 * sin(t);
Vector2 result(x, y);
return result;
}
今の速度は、私はこれを考え出したらそれが問題のあまりすべきではない、心配のあまりないです。私はいくつかの角度の変更を取得しますが、それは逆転され、わずか1/8th円です。
私はたぶんどこかで誤算しています。私は波のベクトルについてちょっと知りました。
1次元の進行波や、通常の正弦波を調整する別のものをvec
で試してみました。それは多かれ少なかれ同じ結果を持っていた。
ありがとうございます!
EDIT:
vec
は、マウスクリックの場所にプレイヤーの位置からの変位です。返り値は、ウェイトパターンに従うように調整された新しいベクトルです。BulletFun::sine
は、弾丸を受け取り更新するたびに呼び出されます。
セットアップは、このようなものです:擬似コードで
void Bullet::update() {
_velocity = BulletFun::sine(_displacement);
_location.add(_velocity); // add is a property of Tuple
// which Vector2 and Point2 inherit
}
それはあなたが実際に欲しいものを見るのは難しいと非常によく似た機能になります。関数が与えられた 'vec'の値は何ですか?また、その返り値は何を表すのでしょうか? – leftaroundabout