Hallo,
ich bin momentan an einem Spiel am ausprobieren.
Ich bin soweit das ich, wenn zwar nicht optisch hervorragend, einen Sprung mit anschließendem Landen auf der "Erde" (unterem Teil des Bildschirmes) hinbekomme.
Ich habe es so realisiert (Code des Sprunges):
|
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
|
if (App.GetInput().IsKeyDown(sf::Key::Space))
{
if (status == false && Sprite.GetPosition().y > 599 - Sprite.GetSize().y)
{
höhe = 75;
status = true;
}
}
if (höhe > 0)
{
Sprite.Move( 0 , -200 * ElapsedTime);
höhe = höhe-1;
}
if (höhe == 0)
status = false;
tempy = Sprite.GetPosition().y;
if (tempy < 602 - Sprite.GetSize().y && status == false)
{
Sprite.Move(0, tempy * ElapsedTime);
}
if (tempy > 599 - Sprite.GetSize().y)
{
Sprite.SetY(600 - Sprite.GetSize().y);
}
|
Das tempy ist die Position der Figur(Sprite).
Das "status" bezieht sich darauf ob sich die Figur im Sprung befindet oder ob sie schon wieder auf 600 ist und bereit zum weiteren Sprung.
Meine Frage ist nun wie man das ganze "intelligenter" verpacken kann bzw. ob man es kommplet anders machen kann.
Das dort oben ist nur eine Notlösung von mir da ich selber auch noch ziemlich am Anfang mit allem stehe.
Probleme sehe ich nun darin die Figur auf z.B. einem Gegenstand der sich "unter" 600, also über dem unteren Bildschirm rand, befindet zu bewegen.
Ich hoffe das man das, was ich dort oben versucht habe, nachvollziehen kann.
MfG
Bloore