, поэтому я новичок в переполнении стека и программировании в целом, поэтому простите меня, если я сделаю или скажу что-нибудь откровенно глупое из невежества.Имея некоторые проблемы с представлениями в SFML
Итак, я пытался научиться использовать SFML недавно, и до сих пор все идет хорошо, но в последнее время я пытался запрограммировать движущуюся камеру. Позвольте мне показать вам мой код:
#include <SFML/Graphics.hpp>
#include <SFML/Audio.hpp>
#include <iostream>
#include <cstdlib>
using namespace std;
using namespace sf;
bool frame60 = true;
void print(string inputText) {
bool consoleOn = true;
if(consoleOn == true) { cout << inputText; }
}
void start() {
sf::View view1;
view1.reset(sf::FloatRect(300, 200, 300, 200));
view1.setCenter(0, 0);
RenderWindow window(VideoMode(1600, 900), "Test Game");
window.setView(view1);
window.setKeyRepeatEnabled(false);
switch(frame60) {
case true:
window.setFramerateLimit(60);
break;
case false:
window.setFramerateLimit(30);
break;
default:
window.setFramerateLimit(60);
break;
}
Texture testure;
testure.loadFromFile("vsm.png");
Sprite testsprite;
testsprite.setTexture(testure);
testsprite.setOrigin(0, 0);
float playerx = 0;
float playery = 0;
while(window.isOpen()) {
Event event;
while(window.pollEvent(event)) {
switch(event.type) {
//Making the window closable
case Event::Closed:
window.clear();
window.close();
break;
}
}
if(Keyboard::isKeyPressed(Keyboard::A)) {
playerx += 0.5;
}
if(Keyboard::isKeyPressed(Keyboard::D)) {
playerx -= 0.5;
}
testsprite.setOrigin(playerx, playery);
view1.setCenter(playerx, playery);
window.draw(testsprite);
window.display();
window.clear();
cout << playerx << endl;
}
}
int main() {
start();
return 0;
}
(не против меня, используя Самодельный начинают функцию, что просто мне экспериментировать, чтобы получить лучшее представление о том, как использовать C++ в целом, как, вероятно, и в случае с. много ненужных частей этой программы, так как эта программа - всего лишь учебное упражнение.)
Итак, в основном, как вы можете видеть, у меня есть синий прямоугольник, который перемещается. Тем не менее, я хочу, чтобы камера следила за ним, поэтому в игровом цикле я показываю свое представление, чтобы установить его центр, где находится прямоугольник. Довольно простой. Проблема в том, что экран не перемещается. Я нажимаю левую и правую клавиши, которые я устанавливаю, и я все еще вижу, что окно перемещается по черному фону, когда, если вид следил за ним, он, казалось бы, не двигался вообще, и единственным доказательством того, что он движется, должно быть в моем окне консоли.
Что я делаю неправильно?
Спасибо, вы очень помогли мне. – AxleRe
Добро пожаловать. (не забудьте принять ответ) – LogicStuff
@AxleRe Вы также должны прочитать [Tour] (http://stackoverflow.com/tour), если вы этого не сделали. Это поможет вам избежать плохих вопросов. Вам не нужно беспокоиться об этом, это вопрос выше среднего. – LogicStuff