Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

1

22.08.2012, 17:17

Sprung Funktion

Hallo Leute,

(Java)
ich bastle gerade an der Sprung Funktion aber sie will noch nicht so, wie ich das möchte.

C#-Quelltext

1
2
3
4
5
6
7
8
if(input.isKeyDown(hüpfen_string))
        {
            if(spieler.y >= new Physik().getHüpfhöhe())
            {
                float hip = new Spieler(null).getHüpfgeschwindigkeit()* delta;
                spieler.y -= hip;
            } 
        }


Der Spieler hüpft zwar nach oben und wird von der Schwerkraft wieder nach unten gezogen, jedoch muss ich für das Hüpfen lange auf der Tastatur bleiben.
Wie lässt sie es so realisieren, dass man nur einmal kurz draufdrücken muss.

Danke für eure Hilfe
Ghorki

2

22.08.2012, 17:23

Du kannst die Hüpfgeschwindigkeit erhöhen. ;)

Btw: Wieso erstellst du die Physik und den Spieler immer neu? Und wird das überhaupt gelöscht?

DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

3

22.08.2012, 17:25

In dem du die Hüpffunktion in deinem main loop aufrufst nachdem die Taste einmal getippt wurde und das so lange bis der Spieler wieder auf dem Boden steht.

BlueCobold

Community-Fossil

Beiträge: 10 738

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

4

23.08.2012, 08:03

Und wird das überhaupt gelöscht?

Klar, es ist doch Java. Unschön bleibt es trotzdem.
Teamleiter von Rickety Racquet (ehemals das "Foren-Projekt") und von Marble Theory

Willkommen auf SPPRO, auch dir wird man zu Unity oder zur Unreal-Engine raten, ganz bestimmt.[/Sarkasmus]

5

23.08.2012, 20:38

Hey,

Zitat

Btw: Wieso erstellst du die Physik und den Spieler immer neu? Und wird das überhaupt gelöscht?
Geändert ;)

Zitat

Du kannst die Hüpfgeschwindigkeit erhöhen. ;)
Habe ich gemacht, nur sieht es jetzt ziemlich unschön aus, da der Spieler beim hüpfen vom Boden direkt in der Luft steht.
Wie kann ich einen schöneren übergang gestalten, die Idee hab ich ja, nur die Umsetzung scheitert.
Der Spieler müsste den Weg in kleineren Schritten bis zum Ziel (höchster Hüpfpunkt) zurücklegen, seh ich das soweit richtig?
Was würdet ihr mir Vorschlagen bzw Raten?

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
private float hüpfgeschwindigkeit = 30.6f;
private float schwerkraftgeschwindigkeit = 0.2f;

Steuerungs Klasse

public void hüpfen(Spieler spieler, Input input, int delta)
{
        if(input.isKeyPressed(hüpfen_hotkey))
        {
            float hip = spieler.getHüpfgeschwindigkeit() * delta;
            spieler.y -= hip;
        }
}


Physik Klasse

public void schwerkraft(Spieler spieler, int delta)
    {
        if(spieler.y < getBoden())
        {
            float hip = getSchwerkraftgeschwindigkeit() * delta;
            spieler.y += hip;
        }
    }


MAIN KLASSE

 public void update(GameContainer container, int delta) throws SlickException
    {
        Input input = container.getInput();
        
        spielphysik(delta);
        
        spielsteuerung(container, input, delta);
    }
    
    public void spielphysik(int delta)
    {
        
        physik.schwerkraft(spieler, delta);
    }

Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von »Ghorki« (23.08.2012, 20:45)


DeKugelschieber

Community-Fossil

Beiträge: 2 641

Wohnort: Rheda-Wiedenbrück

Beruf: Software-Entwickler

  • Private Nachricht senden

6

23.08.2012, 21:34

Guck dir am besten mal das an: Line Runner

Und dann die Spieler.pde (Source). Das ganze ist zwar nicht direkt Java, sondern eine vereinfachte Version davon mit Processing, aber die Logik bleibt die gleiche. Ich weise darauf hin dass dieses Programm innerhalb von 01:00 Uhr bis 05:00 Uhr entwickelt wurde. Daher kann es sein das die Lösung nicht wunderschön ist ^^

Werbeanzeige