Что не так с этим кодом?
Решил написать тестовую программу, которая перемещает шар в ту часть экрана телефона, куда я нажму. Но когда я делаю setPosition(SPos, SPos) у меня все резко перестает работать. Вот код
#include <SFML/Graphics.hpp>
using namespace sf;
int main()
{
RenderWindow window(VideoMode(360, 800), L"Sfml", Style::Default);
window.setVerticalSyncEnabled(true);
CircleShape shape(100.f,50);
shape.setFillColor(Color::Red);
while (window.isOpen())
{
Event event;
sf::Vector2i SPos = sf::Touch::getPosition(1);
shape.setPosition(SPos, SPos);
while (window.pollEvent(event))
{
if (event.type == Event::Closed)
window.close();
}
window.clear();
window.draw(shape);
window.display();
}
return 0;
}
Ответы (1 шт):
Ну начнем с того что ты уже используешь.
using namespace sf;
По этой причине вообще не стоит использовать, sf:: во всех местах например sf::Vector2i просто - Vector2i
Во вторых, я даже незнакомый с библиотекой SFML/Graphics первое что сделал, просто загуглил мануал. (https://www.sfml-dev.org/documentation/2.5.1/classsf_1_1CircleShape.php) И что я там увидел?! Есть 2 метода setPosition
void setPosition(float x, float y);
void setPosition (const Vector2f &position)
Первый на вход принимает 2 аргумента float, Второй принимает float вектор Vector2f.
То-есть фактический ты пытаешься в float запихать Vector2i[int,int], и естественно твоё приложение в шоке от такой махинации, там позиция твоего круга может иметь космическую позицию, все это завернотое в while просто вешает твой телефон;
Решения два.
Конвертировать Vector2i в Vector2f и передать второй функции одним аргументом.
Вытащить из Vector2i отдельно значение X и Y преобразовать их в float и передать 1й функции.
Да будет вам счастье! )
Добавлено спустя:
Еще чуток погуглив, оказывается объект Vector2f поддерживает,статическое преобразование.
Vector2i mousePosition = Mouse::getPosition();
Vector2f mousePositionFloat = static_cast<Vector2f>(mousePosition);
Можно отдельно сказать спасибо пользователям Редит за прекрасный пример - https://www.reddit.com/r/sfml/comments/24fk87/what_is_the_proper_way_to_convert_a_vector2i_to_a/