Ach so, stimmt.
also beispielsweise:
public:
void Init (CPlayer *pPlayer, float fXPos, float fYPos);
private:
CPlayer m_pPlayer
Dann kann ich innerhalb meiner EnemyKlasse diese Kopie nutzen ...
Wobei ich die Koordinaten nicht brauche, da ich mir diese auch über den Zeiger, der auf das Player-Objekt zeigt, holen kann.
EDIT: Scheint jetzt zu gehen. Nervt nur, dass ununterbrochen geschossen wird, wenn ich mich in einem bestimmten Toleranzbereich befinde und wenn ich nur bei Stelle x1 = x2 schieße, wird nur ein Schuss abgegeben ...
|
C-/C++-Quelltext
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
// Update
//
// Aufgabe: Spieler updaten
//
void CEnemy::Update ()
{
// Nach links?
if (m_moving == true)
{
m_fXPos += 200.0f * g_pTimer->GetElapsed ();
m_fAnimPhase += 20.0f * g_pTimer->GetElapsed ();
}
// Nach rechts?
else if (m_moving == false)
{
m_fXPos -= 200.0f * g_pTimer->GetElapsed ();
m_fAnimPhase -= 20.0f * g_pTimer->GetElapsed ();
}
else
{
// Animation zurück zum Ausgangspunkt (Mitte entspricht 5 Bild!)
if (m_fAnimPhase > 5.0f)
m_fAnimPhase -= 20.0f * g_pTimer->GetElapsed ();
if (m_fAnimPhase < 5.0f)
m_fAnimPhase += 20.0f * g_pTimer->GetElapsed ();
}
m_Rect.x = static_cast<int>(m_fXPos);
// Prüfen, ob geschossen wurde
ProcessShooting ();
if (m_fXPos > 752.0f)
{
m_fXPos = 752.0f;
m_moving = false;
}
else if (m_fXPos < 0.0f)
{
m_fXPos = 0.0f;
m_moving = true;
}
// Animationsphase prüfen
if (m_fAnimPhase < 0.0f)
m_fAnimPhase = 0.0f;
else if (m_fAnimPhase > 10.0f)
m_fAnimPhase = 10.0f;
// Gegnerschuss
EnemyShot();
} // Update
|