【发布时间】:2015-08-12 12:41:27
【问题描述】:
我正在使用 SFML 制作游戏并尝试添加射击,但由于某种原因 sprite.move() 似乎不起作用。以下是相关代码:
武器.cpp
void Weapon::update(float delta, sf::RenderWindow& window, Player player) {
for (auto s : shots) {
s.move(delta);
s.draw(window);
}
switch (type) {
case RANGED:
if (sf::Mouse::isButtonPressed(sf::Mouse::Left)) {
shots.push_back(Shot(shot, player.position, Helper::getMousePos(window)));
Helper::log(std::to_string(shots.size()));
}
break;
case MELEE:
break;
}
}
Shot.cpp
Shot::Shot(sf::Sprite sprite_, sf::Vector2f origin, sf::Vector2f target)
{
sprite = sprite_;
sprite.setPosition(origin);
direction = Helper::normalizeVector(target - origin);
speed = 200;
}
void Shot::move(float delta) {
sprite.move(direction * speed * delta);
}
void Shot::draw(sf::RenderWindow& window) {
window.draw(sprite);
}
发生的情况是射击在玩家的位置产生,但它们并没有移动。相反,他们有点振动,好像他们想移动但有什么东西阻止了他们。如果您需要更多代码,请告诉我。
【问题讨论】: