首页 > 解决方案 > SFML 球员运动

问题描述

我在 macos 上使用 SFML 实现玩家移动时遇到问题。当我使用这段代码时,玩家移动有效:

keyRight = event.type == Event::KeyPressed && event.key.code == sf::Keyboard::Right;
    keyLeft = event.type == Event::KeyPressed && event.key.code == sf::Keyboard::Left;
    keyUp = event.type == Event::KeyPressed && event.key.code == sf::Keyboard::Up;
    keyDown = event.type == Event::KeyPressed && event.key.code == sf::Keyboard::Down;

但如果我使用它,它将不起作用:

keyRight= sf::Keyboard::isKeyPressed(sf::Keyboard::Right);
    keyLeft= sf::Keyboard::isKeyPressed(sf::Keyboard::Left);
    keyUp= sf::Keyboard::isKeyPressed(sf::Keyboard::Up);
    keyDown= sf::Keyboard::isKeyPressed(sf::Keyboard::Down);

我想使用第二种方法,因为第一种方法似乎不适用于对角线运动(它只是不能同时按下两个键。)我在哪里犯了错误?

标签: sfml

解决方案


对于每个遇到相同问题的 mac 用户,我都设法解决了我的问题。由于 os catalina 您必须重新授予编译器(或项目)权限以监视输入。更多内容:https ://en.sfml-dev.org/forums/index.php?topic=26395.0

您可以在每次更改构建中的任何内容时单击它,也可以使用基于事件的移动。


推荐阅读