Итак, я пытаюсь заставить игрока выстрелить в пулю, которая движется к мышке волнообразным образом.Я могу заставить пулю двигаться волнообразно (хотя и не совсем так, как я предсказывал), но не в направлении мыши.
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/8-й круг.
Я, вероятно, где-то что-то просчитал.Я только что узнал о волновых векторах.
Я пробовал несколько других вещей, таких как одномерные бегущие волны и еще одну вещь, связанную с настройкой нормальной синусоидальной волны с помощью vec
.Который имел более или менее тот же результат.
Спасибо!
РЕДАКТИРОВАТЬ:
vec
смещение от местоположения игрока к месту щелчка мыши.Возврат - это новый вектор, который настроен так, чтобы следовать волновой схеме, BulletFun::sine
вызывается каждый раз, когда пуля получает и обновляет.
Настройка выглядит примерно так:
void Bullet::update() {
_velocity = BulletFun::sine(_displacement);
_location.add(_velocity); // add is a property of Tuple
// which Vector2 and Point2 inherit
}