在我制作的游戏中,枪支有一个点差(浮动),我想给每个子弹的角度一个随机值[-spread,spread]。为此,我想我可以使用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
)