moin!
Hab mal wieder ein Problem, hab Debugger benutzt alle (imo) relevanten Funktionen und ifs durchgekuckt, soweit passt alles, aber der sprite bewegt sich nicht!
Ich poste mal den relevanten Code! Hilfe wäre net wird vermutlich wieder ein mega banaler Fehler sein
|
C-/C++-Quelltext
|
1
2
3
4
|
// Game Loop!
MyGame->Move(Window->GetFrameTime());
MyGame->Render();
Window->Display();
|
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
|
bool CGame::Move(int fFrameTime)
{
bool B = false;
if(m_TheBall != 0)
{
m_TheBall->Move(fFrameTime);
}
B = m_PlayerPaddleRight->Move(fFrameTime) ? B = true : B = false;
B = m_PlayerPaddleLeft->Move(fFrameTime) ? B = true : B = false;
return B;
};
|
Der Ballpointer wird anfangs auf 0 gesetzt, dann ird ein ball erstellt, fleigt der aus dem Spielfeld, wird er gelöscht auf 0 gesetzt und ein neuer erstellt. Das passt, die IFs
werden ausgeführt, wie es sein soll!
Die Paddels sind atm unrelevant, der Rückgabe wert "B" auch!
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
|
bool CBall::Move(int fFrameTime)
{
// [...] (auskommentiert, danicht releavant zum Test!!)
m_vPosition.x = m_vPosition.x + (m_vVelocity.x * fFrameTime);
m_vPosition.y = m_vPosition.y + (m_vVelocity.y * fFrameTime);
setPosition(m_vPosition.x, m_vPosition.y);
return false;
};
|
so. Hier wird die Position neu gesetzt und die move methode der vball klasse aufgerufen. höngt damit zusammen, dass sfml die spirtes relativ zur linken oberen ecke bewegt ich aber bewegung relativ zum mittelpunkt haben wollte!
|
C-/C++-Quelltext
|
1
2
3
4
5
6
|
void CBall::setPosition(int x, int y)
{
m_vPosition.x = x;
m_vPosition.y = y;
m_Sprite.SetPosition((int)(x - 0.5 * m_Diameter), (int)(y - 0.5 * m_Diameter));
};
|
Das soillte alles relevante sein, der Render Vorgang wird einmal durchgeführt (alles erscheint wie es sein soll, bis auf dass sich der Ball nicht bewegt!!) und sollte passen!
Findet wer den fehler pls
mfg