SFML生成等距图块

Kev*_*vin 1 c++ graphics 2d sfml

我有一个精灵,一个正方形,仅用于正交投影.现在我想以一种非常基本的,简单的等距方式投影它.(我知道这可能不太漂亮,但我只是想弄清楚这一点)

鉴于我的方格,我将它旋转45度.现在,如果我理解正确,我仍然应该将我的身高除以2.这在SFML中是不可能的.有一个比例函数,但是如果我在y轴方向上以0.5的比例缩放,我的立方体就会被拉伸,而不是钻石形状.看起来SFML根据它自己的相对轴(在...之前旋转)来转换精灵.

既然你无法访问精灵的高度,我想知道这是否可能?

我可以在SFML中将方形精灵转换为菱形吗?

And*_*ita 5

使用sf :: RenderTexture是一个选项(参见其他答案).另一个选择是摆弄sf::View.将视图的高度加倍,并调整坐标.它会是这样的:

my_sprite.setRotation(45.f);
//adjust the position for new screen coordinates (once)
my_sprite.setPosition(my_sprite.getPosition().x, my_sprite.getPosition().y * 2);

//...

//when drawing:
sf::View v = my_render_window.getDefaultView();
v.setSize(v.getSize().x, v.getSize().y * 2);
v.setCenter(v.getSize() *.5f);

my_render_window.setView(v);
my_render_window.draw(my_sprite);
my_render_window.setView(my_render_window.getDefaultView());
Run Code Online (Sandbox Code Playgroud)