SFML Pixel Perfect Collision ограничен видом?

В этом коде у меня есть один вид (белый, масштаб 2) и исходное окно, а также один спрайт для автомобиля и один спрайт для стены …

#include <SFML/Graphics.hpp>
#include "collision.hpp"
#define windowWidth  1000
#define windowHeight 600

int main()
{
sf::RenderWindow window(sf::VideoMode(windowWidth, windowHeight), "SFML Views");

sf::View view(sf::FloatRect(0,0, windowWidth, windowHeight));
view.zoom(2);

// car
sf::Texture imgCar;
Collision::CreateTextureAndBitmask(imgCar, "carro.png" );
sf::Sprite car;
car.setTexture(imgCar);
car.setPosition(0, (windowHeight - imgCar.getSize().y) / 2);

// wall
sf::Texture imgWall;
Collision::CreateTextureAndBitmask( imgWall, "barreira.png" );
sf::Sprite wall;
wall.setTexture(imgWall);
wall.setPosition(windowWidth - imgWall.getSize().x, 0);

sf::RectangleShape background (sf::Vector2f(windowWidth, windowHeight));
background.setFillColor(sf::Color::White);while (window.isOpen())
{
sf::Event event;
while (window.pollEvent(event))
{
if (event.type == sf::Event::Closed)
window.close();
}
if (!Collision::PixelPerfectTest(car, wall))
car.move(0.1, 0);

window.clear();
window.setView(view);
window.draw(background);

window.setView(window.getDefaultView());
window.draw(car);
window.draw(wall);
window.display();
}

return 0;
}

… если автомобиль и стена связаны с главным окном, я получаю идеальное столкновение автомобиля со стеной. (см. изображение).

Теперь, если я поставлю машину в поле зрения …

window.clear();
window.setView(view);
window.draw(background);
window.draw(car);

window.setView(window.getDefaultView());
window.draw(wall);
window.display();

… столкновение обнаруживается, как если бы стена находилась в пределах границ вида (который увеличен) (см. изображение).

Как сделать обнаружение столкновений независимым от вида?

0

Решение

Задача ещё не решена.

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]