В игре, которую я делаю, у оружия есть разброс (плавающий), и я хочу присвоить каждому углу пули случайное значение из диапазона [-разброс, разброс]. Для этого я думал, что мог бы использовать glm::rotate
, но проблема в том, что пули разлетаются почти во всех направлениях.
Код, который я использую:
void Gun::fire(const glm::vec2& direction, const glm::vec2& position, std::vector<Bullet>& bullets) {
static std::mt19937 randomEngine(time(nullptr));
// For offsetting the accuracy
std::uniform_real_distribution<float> randRotate(-_spread, _spread);
for (int i = 0; i < _bulletsPerShot; i++) {
// Add a new bullet
bullets.emplace_back(position,
glm::rotate(direction, randRotate(randomEngine)),
_bulletDamage,
_bulletSpeed);
}
}
(Вверху я включил vector
и glm/gtx/rotate_vector.hpp
)
Finally, here is a list of all the functions that could use degrees in GLM 0.9.5.4 that requires radians in GLM 0.9.6: rotate (matrices and quaternions), [etc.]
- person   schedule 24.02.2016