N'abend,
In einem meiner "Spiele" kommt es derzeit zu einem, wie ich finde interessantem Fehler.
Hier erstelle und Update ich den Player:
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
Player::Player(sf::VideoMode &vMode)
{
PlayerShipTexture.loadFromFile("PlayerTest.png");
PlayerShipSprite.setTexture(PlayerShipTexture);
PlayerShipSprite.setPosition(sf::Vector2f(vMode.width /2,vMode.height -50)); //Texture,Sprite und Position festlegen
[...]
}
void Player::Update(sf::RenderWindow &window,float &deltaTime, float &speed)
{
[...]
PlayerShipSprite.setPosition(PlayerPosition); //Update PlayerPosition and Draw Player
window.draw(this->PlayerShipSprite);
}
|
Das funktioniert einwandfrei, Spieler wird immer mit Textur gezeichnet.
Hier erstelle ich einen neuen Asteroid und füge ihn der Liste hinzu und Update ihn.
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
Asteroid::Asteroid(sf::Vector2f &scale, int &position)
{
AsteroidTexture.loadFromFile("Asteroid.png");
AsteroidSprite.setTexture(AsteroidTexture);
AsteroidSprite.setScale(scale);
[...]
}
void Asteroid::Update(sf::Vector2f &position, sf::Vector2f &velocity, float &deltaTime, sf::RenderWindow &window)
{
position += deltaTime * velocity;
this->AsteroidSprite.setPosition(this->Position);
//this->AsteroidSprite.setTexture(this->AsteroidTexture);
window.draw(this->AsteroidSprite);
}
|
Lasse ich die unten auskommentierte Zeile so,werden zwar alle Asteroiden gezeichnet, ABER ohne Textur, d.h. es wird einfach ein weisses Viereck gezeichnet, welches die korrekte Grösse und Position hat.
Füge ich die Zeile wieder normal ein, werden zwar alle Sachen richtig gezeichnet, aber ich möchte auf keinen Fall für jedes Frame die Textur neu festlgegen, dass mag ja bei diesem kleinem Projekt klappen, aber man will ja auch mal hoch hinaus
.
Sehe ich einfach nur den Wald vor lauter Bäumen nicht?!?!, braucht ihr mehr Infos oder könnt mir helfen?
([...] bedeutet unwichtige Zeilen wurden ausgelassen)
MFG,
ERROR