除了for循环部分之外的所有代码都按预期工作,仅供您参考。
我不知道如何通过按一个按钮从向量中逐个释放对象朝向鼠标,每次单击一个不同的对象,而不使前一个对象消失。如果我尝试将它们全部放在1个按钮上,它们会同时产生。这是我唯一需要帮助的东西。我确信这是一个聪明的方法。
class Player
{
public:
sf::RectangleShape rect;
Player(sf::Vector2f position, sf::Vector2f size)
{
rect.setPosition(position);
rect.setSize(size);
}
... 这是射弹
Player crystalArrow(Player(sf::Vector2f(100,100), sf::Vector2f(30, 30)));
...这是矢量/:
std::vector<Player> stars(5,crystalArrow);
...
float angle2 = atan2(mousePosition.y - bullet.y, mousePosition.x - bullet.x);
...
for(int i = 0; i < stars.size(); i++)
{
stars[i].rect.setTexture(&Astar);
window.draw(stars[i].rect);
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
stars[0].rect.setPosition(300,300);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
stars[1].rect.setPosition(300,300);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
stars[2].rect.setPosition(300,300);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::F))
stars[3].rect.setPosition(300,300);
if(sf::Keyboard::isKeyPressed(sf::Keyboard::G))
stars[4].rect.setPosition(300,300);
stars[0].rect.move(cos(angle2)*10,sin(angle2)*10);
stars[1].rect.move(cos(angle2)*10,sin(angle2)*10);
stars[2].rect.move(cos(angle2)*10,sin(angle2)*10);
stars[3].rect.move(cos(angle2)*10,sin(angle2)*10);
stars[4].rect.move(cos(angle2)*10,sin(angle2)*10);
- )
新代码:
for(int i = 0; i < stars.size(); i++)
{
stars[i].rect.setTexture(&Astar);
window.draw(stars[i].rect);
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A) && clock.getElapsedTime().asSeconds() > 0.3f && clock.getElapsedTime().asSeconds() < 0.35f)
stars[0].rect.setPosition(Helif.rect.getPosition());
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A) && clock.getElapsedTime().asSeconds() > 0.6f && clock.getElapsedTime().asSeconds() < 0.65f)
stars[1].rect.setPosition(Helif.rect.getPosition());
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A) && clock.getElapsedTime().asSeconds() > 0.9f && clock.getElapsedTime().asSeconds() < 0.95f)
stars[2].rect.setPosition(Helif.rect.getPosition());
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A) && clock.getElapsedTime().asSeconds() > 1.2f && clock.getElapsedTime().asSeconds() < 1.25f)
stars[3].rect.setPosition(Helif.rect.getPosition());
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A) && clock.getElapsedTime().asSeconds() > 1.5f && clock.getElapsedTime().asSeconds() < 1.55f)
stars[4].rect.setPosition(Helif.rect.getPosition());
if(clock.getElapsedTime().asSeconds() > 1.56f)
clock.restart();
stars[0].rect.move(cos(angle2)*10,sin(angle2)*10);
stars[1].rect.move(cos(angle2)*10,sin(angle2)*10);
stars[2].rect.move(cos(angle2)*10,sin(angle2)*10);
stars[3].rect.move(cos(angle2)*10,sin(angle2)*10);
stars[4].rect.move(cos(angle2)*10,sin(angle2)*10);`
并且每按一次按钮计算方向(角度):
float angle2 = atan2(mousePosition.y - bullet.y, mousePosition.x - bullet.x);