Другие языки программирования и технологии

Нужна помощь с функцией SFML

Допустим мы указали с помощью sf::IntRect некую область, а как сделать проверку клика мыши внутри этой области?
Код: https://ideone.com/y174VB
C++Выделить код

#include "stdafx.h"
#include
#include
#include
#include
#include
#include
#include
#include
#include
#include

using namespace sf;

float currentFrame = 0; //в этой переменной мы сохраняем номер кадра

int main() {

bool isMove = false;//переменная для щелчка мыши по спрайту
float dX = 0;//корректировка нажатия по х
float dY = 0;//по у

RenderWindow window(VideoMode(640, 480), "FORK PROJECT");

Texture texture;
texture.loadFromFile("C:/111/z1.jpg");
Sprite sprite;
sprite.setTexture(texture);
sprite.setPosition(300, 50);
sprite.setTextureRect(IntRect(1, 1, 200, 200)); // нулевая текстура старта

{

while (window.isOpen()) {

sf::Vector2i localPosition = Mouse::getPosition(window);//заносим в вектор координаты мыши относительно окна (х, у)
Vector2i pixelPos = Mouse::getPosition(window);//забираем коорд курсора
Vector2f pos = window.mapPixelToCoords(pixelPos);//переводим их в игровые (уходим от коорд окна)

std::cout << pixelPos.x << "\n";//смотрим на координату Х позиции курсора в консоли (она не будет больше ширины окна)
std::cout << pos.x << "\n";//смотрим на Х, которая преобразовалась в мировые координаты

// std::cout << "local Position mouse " << localPosition.x << "\n";// как себя ведет позиция курсора Х

Event event;
while (window.pollEvent(event)) {
if (event.type == Event::Closed)
window.close();

if (event.type == Event::MouseButtonPressed)//если нажата клавиша мыши
if (event.key.code == Mouse::Left)//а именно левая
// if (p.sprite.getGlobalBounds().contains(pos.x, pos.y))//и при этом координата курсора попадает в спрайт
{
std::cout << "isClicked!\n";//выводим в консоль сообщение об этом
// dX = pos.x - p.sprite.getPosition().x;//делаем разность между позицией курсора и спрайта. для корректировки нажатия
// dY = pos.y - p.sprite.getPosition().y;//тоже самое по игреку
// isMove = true;//можем двигать спрайт

if (event.type == Event::MouseButtonReleased)//если отпустили клавишу
if (event.key.code == Mouse::Left) //а именно левую
isMove = false; //то не можем двигать спрайт
// p.sprite.setColor(Color::White);//и даем ему прежний цвет

}

}

if (Keyboard::isKeyPressed(Keyboard::Up)) {
sprite.move(0, -0.1);
}
if (Keyboard::isKeyPressed(Keyboard::Down)) {
sprite.move(0, 0.1);
}

//

window.clear(Color::White);
window.draw(sprite);
window.draw(sprite);
window.display();
}
return 0;
}
}
Андрей Гавриленко
Андрей Гавриленко
196
Лучший ответ
Никита Лабутин что то вообще ничего не понятно, можете обьяснить как именно с IntRect работать?
Как сравнить данные вектора с IntRect?