【问题标题】:C++ SFML - How to make bouncing sprite?C++ SFML - 如何制作弹跳精灵?
【发布时间】:2016-04-22 22:21:57
【问题描述】:

我尝试使用 SFML 用 C++ 制作 2D 游戏。我已经绘制了精灵,现在我想让那个精灵自动移动到随机方向,当它撞到墙上时,它会弹开并改变方向。我不知道如何自动移动精灵从墙上反弹...所以请帮助我。

【问题讨论】:

    标签: c++ game-physics sfml


    【解决方案1】:

    sf::Sprite 有一个成员函数setPosition (float x, float y),您可以使用它来设置精灵在绘制之前的位置。通过将精灵移动到每一帧的新位置,您可以创建运动的印象,就像卡通一样。通过将精灵的位置与场景中其他元素的位置(如墙壁)进行比较,您可以计算出 2 个对象何时撞击并采取适当的行动。通常它是这样工作的:

    • 在新帧开始时重置时钟,例如可以使用sf::Clock 或 C++ 的 chrono。
    • 更新场景中所有应该移动的元素的位置,例如:ObjectSpeed * Previous frame time
    • 画框
    • 节省计算下一帧所用的时间
    • 循环

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-06-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多