【问题标题】:Collision between Sprite and Tile mapSprite 和 Tile 贴图之间的碰撞
【发布时间】:2015-03-06 11:03:25
【问题描述】:

如何在 SFML 库中创建/定义角色 Sprite 和地图 Tile 之间的冲突?我希望我的玩家能够识别出他撞墙的时间。

【问题讨论】:

    标签: c++ dictionary sprite collision sfml


    【解决方案1】:

    在 SFML 中,您没有 Tile 类。但是您可能能够创建 sf::FloatRect 来描述您的 Tile rect。

    Sprite 类有方法

    FloatRect   getGlobalBounds () const
    

    这也给了你 sf::FloatRect 并且当你拥有两个矩形时,你将能够从 sf::FloatRect: 中使用这个方法:

    bool    intersects (const Rect< T > &rectangle) const
    

    看看它们是否相撞。现在你需要检查这个碰撞到靠近你的玩家的地图元素。

    【讨论】:

    • 是的,我明白这一点,但我怎样才能将边界框设置为整个地图中的一个图块?
    • 如果你有tilemap,那么你可能知道tile sprite的起始位置和tile的大小。如果您的起始位置不是 sf::Vector,那么它可能是数组中的索引?因此,如果您知道大小和索引,则可以计算图块的位置。如果你有位置和大小,你可以创建 sf::FloatRect。如果您的地图是仅从图形视图中划分为图块的大图像,则您需要创建类似逻辑图块地图的东西,它会记住阻塞图块的位置和大小。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多