Guten tach,
ich arbeite imoment mit Box2d und SFML. Allerdings schein ich ein Scale problem zu haben. weiß aber nicht wie ich es umsetzen soll.
Es sollen 2 Boxen in Box2d erstellt werden, aufdiese ich dann ein Sprite von SFML lege.
Nun "fahre" ich mit der
Charakter-Box gegen die
Wall-Box. Dabei fällt mir jedoch auf, dass der
Colider um exakt 64 Pixel in Richtung oberer linker Bildschirmecke verschoben ist.
Das problem scheint jedoch nur bei der
Wall-Box der Fall zu sein, obwohl es sich um die gleiche Klasse und Initialisierung handelt.
Erzeugung der Boxen
|
C-/C++-Quelltext
|
1
2
|
Charakter = new CBody_Sprite("Data/128.png", 200, 300, 128, 128, b2BodyType::b2_dynamicBody, World);
Wall = new CBody_Sprite("Data/256.png", 400, 300, 256, 256, b2BodyType::b2_staticBody, World);
|
Init der Boxen
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
|
CBody_Sprite::CBody_Sprite(const std::string Path, const unsigned short posX, const unsigned short posY, const unsigned short sizeW, const unsigned short sizeH, b2BodyType type, b2World * World)
{
bodyDef.fixedRotation = true;
bodyDef.type = type;
bodyDef.position.Set(posX, posY);
//bodyDef.position.Set(posX + 64, posY + 64); //mit +64 scheint es zu Funktionieren
box.SetAsBox((sizeW / 2), (sizeH / 2), b2Vec2(0, 0), 0);
body = World->CreateBody(&bodyDef);
body->CreateFixture(&box, 0);
Texture.loadFromFile(Path);
Sprite.setTexture(Texture);
Sprite.setPosition(posX, posY);
}
|
Was ich nur sehr komisch finde ist, dass sobald ich +64 an die Position aufrechne, warum dann der Colider des Charakters nicht verrückt spielt?
Koords habe ich schon 1000x geprüft. Jeweil die SFML als auch die Box2d Koords behaupten aufeinander zu liegen. Jedoch ist nur das SFML Sprite auch auf der Richtigen Posi.
Bild im Anhang!
Mfg Urprimat