Otoz chcialbym wyswietlic image, w tym przypadku celownik, na pozycji kursora.
Mam takie cos:
sf::Vector2f mysz(sf::Mouse::getPosition(okno));
celownik.setPosition(mysz);
i celownik porusza sie w stalej odleglosci od kursora, gdy najade na lewy gorny rog okna znajduje sie on dokladnie na srodku... ;/
Caly kod (krotki):
#include <SFML/Graphics.hpp>
#include <cmath>
#include "Mapa.h"
int main()
{
sf::View kamera;
kamera.setSize(sf::Vector2f(380,350));
sf::Texture player_ak,player_pistol,cel_tex;
player_pistol.loadFromFile("gracz_pistol.png");
player_ak.loadFromFile("gracz_ak.png");
cel_tex.loadFromFile("celownik.png");
sf::Sprite gracz,celownik;
gracz.setTexture(player_pistol);
celownik.setTexture(cel_tex);
sf::RenderWindow okno( sf::VideoMode( 800, 600 ), "Shoot To Live !" );
while( okno.isOpen() )
{
sf::Vector2f mysz(sf::Mouse::getPosition(okno));
okno.setView(kamera);
kamera.setCenter((gracz.getPosition().x),(gracz.getPosition().y));
sf::Event zdarzenie;
while( okno.pollEvent( zdarzenie ) )
{
if( zdarzenie.type == sf::Event::Closed ){okno.close();}
if( zdarzenie.type == sf::Event::KeyPressed && zdarzenie.key.code == sf::Keyboard::Escape );//Wlaczenie menu
} //while
//------------ PORUSZANIE ---------------------------
if(sf::Keyboard::isKeyPressed(sf::Keyboard::W))
{
gracz.move(0,-0.05);
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::S))
{
gracz.move(0,0.05);
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::A))
{
gracz.move(-0.05,0);
}
if(sf::Keyboard::isKeyPressed(sf::Keyboard::D))
{
gracz.move(0.05,0);
}
//-----------------------------------------------------
//okno.setMouseCursorVisible(false);
celownik.setPosition(mysz);
gracz.setOrigin((13.5),10);
gracz.setRotation(atan2(static_cast < double > (mysz.y - 300),static_cast < double > (mysz.x - 400) )*180.f/M_PI+42);
okno.clear();
mapa(okno);
okno.draw(gracz);
okno.draw(celownik);
okno.display();
} //while
return 0;
}