在SFML / C ++中绘制小地图

时间:2015-12-12 21:19:51

标签: c++ sfml

据我所知,我已经可以通过修改视图对象来创建小地图,如here所述,但我想要的是一个小矩形,它有一个框或箭头代表玩家,其他颜色代表敌人或各种物体的盒子。有没有更好的方法来做到这一点,而不是简单地创建一个Minimap对象,计算每个敌人的位置,并将其转换为一个代表性的对象(框,箭头......等)然后被绘制到屏幕上?

这是一个普遍的问题,所以我并不是真的期待样本代码,即使它非常感激。我现在正在概述一个迷你市场课程,我很快就会把它上传到这里。

以下是我在绘制循环中所做的事情:

minimap.setCenter(player.getPosition());
minimap.setViewport(sf::FloatRect(0.75f, 0.75f, 0.25f, 0.25f)); 
//Bottom right corner of screen

window.setView(minimap);

window.draw(player);

window.setView(view); //Return to default view

启动视图时调用minimap.zoom(10);

1 个答案:

答案 0 :(得分:0)

实际上,我试过这个:

window.setView(minimap);

sf::CircleShape object;
object.setRadius(200);
object.setFillColor(sf::Color::Blue);
object.setPosition(player.getPosition());
window.draw(object);


object.setFillColor(sf::Color::Red);
for (auto& e : enemies)
{
    object.setPosition(e->getPosition());
    window.draw(object);
}

window.setView(view);

这很有效。显然它会因为自己的课程而受益,所以圈子不必在每个循环中重新创建等等。

如果有更好的方法,请务必提及。

这是Minimap(右下角)的屏幕截图: screenshot