Hey there,
i got some problem with a collision-test im doing at the moment. Also im still kinda noobish at C++ so i cant figure out whats wrong by myself. Hope you can help me.
Code works just fine without that Intersects Line.
Here is my (full) Code:
#include "stdafx.h"
#include <SFML\Graphics.hpp>
#include <SFML\System.hpp>
#include <SFML\Window.hpp>
int main()
{
// Create the main rendering window
sf::RenderWindow App(sf::VideoMode(800, 600, 32), "Collision-Test");//,sf::Style::Fullscreen);
const sf::Input& Input = App.GetInput();
// Rects
sf::Rect<int> HRect;
sf::Rect<int> ORect(200,200,240,240);
// Init Player (20x30px)
sf::Image HeroIMG;
sf::Sprite HeroSprite;
float Speed;
HeroIMG.LoadFromFile("data/img/hero.bmp");
HeroSprite.SetImage(HeroIMG);
HeroSprite.SetPosition(400.f, 300.f);
HeroSprite.SetCenter(11,22);
Speed=100.f;
// Init Rect (40x40px)
sf::Image RectIMG;
sf::Sprite Rect;
RectIMG.LoadFromFile("data/img/rect.bmp");
Rect.SetImage(RectIMG);
Rect.SetPosition(200.f,200.f);
// Start game loop
sf::FloatRect RenderRect;
while (App.IsOpened())
{
// Process events
sf::Event Event;
while (App.GetEvent(Event))
{
// Close window : exit
if (Event.Type == sf::Event::Closed)
App.Close();
if ((Event.Type == sf::Event::KeyPressed) && (Event.Key.Code == sf::Key::Escape))
App.Close();
}
// Update Player
float ElapsedTime = App.GetFrameTime();
sf::Vector2f Position=HeroSprite.GetPosition();
HRect.Left=Position.x;
HRect.Top=Position.y;
HRect.Right=Position.x+20;
HRect.Bottom=Position.y+30;
// Move the PlayerSprite
if (App.GetInput().IsKeyDown(sf::Key::A)) HeroSprite.Move(-Speed * ElapsedTime, 0);
if (App.GetInput().IsKeyDown(sf::Key::D)) HeroSprite.Move( Speed * ElapsedTime, 0);
if (App.GetInput().IsKeyDown(sf::Key::W)) HeroSprite.Move(0, -Speed * ElapsedTime);
if (App.GetInput().IsKeyDown(sf::Key::S)) HeroSprite.Move(0, Speed * ElapsedTime);
if(HRect.Intersects(ORect))
{
HeroSprite.SetPosition(500,500);
}
// Clear the screen (fill it with black color
App.Clear();
// render Player
App.Draw(Rect);
App.Draw(HeroSprite);
// Display window contents on screen
App.Display();
}
return EXIT_SUCCESS;
}
Error:
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(104): error C2589: '(': Ungültiges Token auf der rechten Seite von '::'
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(102): Bei der Kompilierung der Klassen-template der bool sf::Rect<T>::Intersects(const sf::Rect<T> &,sf::Rect<T> *) const-Memberfunktion
1> with
1> [
1> T=int
1> ]
1> c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\glyph.hpp(54): Siehe Verweis auf die Instanziierung der gerade kompilierten Klassen-template "sf::Rect<T>".
1> with
1> [
1> T=int
1> ]
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(104): error C2059: Syntaxfehler: '::'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(105): error C2589: '(': Ungültiges Token auf der rechten Seite von '::'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(106): error C2589: '(': Ungültiges Token auf der rechten Seite von '::'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(107): error C2589: '(': Ungültiges Token auf der rechten Seite von '::'
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(110): error C2065: 'Overlapping': nichtdeklarierter Bezeichner
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(110): error C2228: Links von ".Left" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(110): error C2065: 'Overlapping': nichtdeklarierter Bezeichner
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(110): error C2228: Links von ".Right" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(110): error C2065: 'Overlapping': nichtdeklarierter Bezeichner
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(110): error C2228: Links von ".Top" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(110): error C2065: 'Overlapping': nichtdeklarierter Bezeichner
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(110): error C2228: Links von ".Bottom" muss sich eine Klasse/Struktur/Union befinden.
1> Typ ist ''unknown-type''
1>c:\program files (x86)\microsoft visual studio 10.0\vc\include\sfml\graphics\rect.inl(113): error C2065: 'Overlapping': nichtdeklarierter Bezeichner
PS: Sorry for bad english and german-error logs (as i am german)