【发布时间】:2019-02-01 14:30:12
【问题描述】:
默认情况下SFML起源于左上角窗口,我把坐标轴的原点放在窗口底部的中心。 x 轴有一个范围(-400;400),这是正常的。但是我的 y 轴有问题,当抬起物体时,位置值下降,顶点是 -600,而不是 600。我希望在上升到顶点时,值增加,而不是像现在这样减少。
窗口的顶部坐标为-600,预期为600
#include <SFML/Graphics.hpp>
#include <iostream>
using namespace sf;
using namespace std;
int speed = 1000;
int main()
{
RenderWindow window(VideoMode(800, 600), L"Test");
RectangleShape rect;
View view;
view.setCenter(0, -300); //!!!
view.setSize(800, 600);
window.setView(view);
rect.setFillColor(Color::Green);
rect.setSize(Vector2f(50, 50));
rect.setPosition(Vector2f(0, 600));
rect.setOrigin(25, 25);
Clock clock;
while (window.isOpen())
{
float time = clock.getElapsedTime().asMicroseconds();
clock.restart();
time /= speed; //1000
Event event;
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
window.close();
}
if (Keyboard::isKeyPressed(Keyboard::Up))
rect.move(0, -0.1*time);
if (Keyboard::isKeyPressed(Keyboard::Down))
rect.move(0, 0.1*time);
if (Keyboard::isKeyPressed(Keyboard::Left))
rect.move(-0.1*time, 0);
if (Keyboard::isKeyPressed(Keyboard::Right))
rect.move(0.1*time, 0);
cout << rect.getPosition().x << " " << rect.getPosition().y << "\n";
window.clear(Color::White);
window.draw(rect);
window.display();
}
return 0;
}
窗口的顶部坐标为-600,预期为600。
【问题讨论】:
-
你误解了你的代码
-
这很糟糕。非常糟糕。
标签: c++ sfml game-development