我制作了一个非常简单的双人游戏,其中一个人是水母,另一个是SFML中的鲨鱼。唯一的问题是只有一个精灵可以一次移动。这有可能解决吗?我该如何解决?
编辑:我的尝试是这样的:if (event.type == sf::Event::KeyPressed)
{
bool D;
bool A;
bool S;
bool W;
bool Up;
bool Right;
bool Left;
bool Down;
if (event.key.code == sf::Keyboard::A)
A = true;
if (event.key.code == sf::Keyboard::D)
D = true;
if (event.key.code == sf::Keyboard::W)
W = true;
if (event.key.code == sf::Keyboard::S)
S = true;
if (event.key.code == sf::Keyboard::Left)
Left = true;
if (event.key.code == sf::Keyboard::Right)
Right = true;
if (event.key.code == sf::Keyboard::Up)
Up = true;
if (event.key.code == sf::Keyboard::Down)
Down = true;
if (D and Right)
{
jelly.move(10, 0)
}
...
}
答案 0 :(得分:2)
您可以通过在按下一个键时设置一个标志来解决它,并在释放该键时清除它。然后,当按下另一个键时,您可以检查此标志。
答案 1 :(得分:1)
或者,您可以使用sf::Keyboard::isKeyPressed
来探测给定点的键盘状态。
当前代码的一个问题是所有变量都是if语句的本地变量,因此在处理下一个事件时会重新初始化。它们应该在if
之外定义。另一个问题是您没有处理KeyReleased
事件。