据我所知,我已经可以通过修改视图对象来创建小地图,如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);
。
答案 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(右下角)的屏幕截图: