Du bist nicht angemeldet.

Werbeanzeige

1

16.02.2015, 08:54

[2D SideScroller] Schussintervalle per Time/Clock?

Hey Leute!

Stehe gerade vor 'nem echt nervigem Problem.





(Bitte beachtet, dass dies mein erstes Spiel ist - ich benutze kaum Patterns - und ein Neuschreiben wäre echt ...doof)


Der Übeltäter ist hier der rot markierte Punkt aká das Projektil.
Bisher habe ich den Reshot Code so aufgebaut das der Spieler jedes mal wieder schiessen kann sobald, entweder
das Projektil außerhalb der View landet oder die Hitbox des Gegners trifft.
Das Problem dabei war - zumindest bei der Hitbox, dass je näher man dem Gegner kommt, der Schussintervall halt kürzer wird.
Somit konnte ich beim halten der Leertaste vor dem Gegner, maschinengewehrartig draufholzen.
Das soll aber nicht Sinn der Sache sein, da jeder Waffe eine andere Kadenz haben soll.

Ich habe dann versucht mit einer Clock/Time das Ganze zu handlen. Sodass egal wo das Projektil landet, auf jeden Fall der Schuss
erst nach einer gewissen Zeit wieder möglich ist.
Problem hier - zumindest wegen meinem Design - Ich müsste für jedes Projektil bzw. für jeden der ein Projektil erschaffen kann
(Spieler, Gegner) eine eigene "ShootClock" erstellen. Die Lösung funktioniert auch. Jedoch gefällt sie mir nicht :P
Ich wollte nur einmal wissen ob es vll. eine schönere Lösung gibt?


gruß Charlie

BlueCobold

Community-Fossil

Beiträge: 10 152

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

2

16.02.2015, 09:17

Wieso trackt das Projektil wann es erstellt wurde? Logischer wäre, wenn die Waffe tracken würde wann sie das letzte Mal geschossen hat. Sie kennt ihre Feuerrate schließlich viel besser, das Projektil sollte davon keine Ahnung haben.
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]

KeksX

Community-Fossil

  • Private Nachricht senden

3

16.02.2015, 09:22

So wie ich das verstanden habe, hat er doch genau das. Jeder hat seinen eigenen Timer, der sagt, wann er wieder schießen kann - unabhängig vom Projektil.


Ich finde die Lösung in Ordnung, denn wo sich das zuletzt geschossene Projektil findet ist der Waffe ja egal, es sei denn du baust eine spezielle Waffe, die das unbedingt so haben will(ich denke da an ferngesteuerte Raketen oder sowas).
Grundsätzlich ist das auch gar keine unschöne Lösung, obwohl man das natürlich nicht immer pauschal sagen kann ohne den Code zu sehen. Da es aber, wie du schon sagtest, dein erstes Projekt ist würde ich hier sagen: Funktionalität > Schönheit. Und dann hinterher Analyse machen, wie man es hätte besser machen können und fürs nächste Projekt merken!
WIP Website: kevinheese.de

4

16.02.2015, 09:32

Danke für die Ratschläge Jungs,


@Cobold

Wie KeksX schon sagt. Im Endeffekt ist Projektil Erstellung und Waffe abfeuern die gleiche Funktion. Das Projektil wird dort halt in meine SceneNodes eingespeist und gleichzeitig stelle ich für meine GetWeapon().isLaunched(true) - um das mal grob darzulegen.

Ich werde es mal mit den Clocks machen wie ich es vor hatte, insofern keiner vll. noch den Tip des Jahres hat (aber bitte dran denken das ich das Design nicht großartig ummöbeln kann [will :P ])


gruß Charlie

TrommlBomml

Community-Fossil

Beiträge: 2 134

Wohnort: Berlin

Beruf: Software-Entwickler

  • Private Nachricht senden

5

16.02.2015, 12:56

Hi Falke88,

erstmal schön, dass du gleich ein Spiel entwickelst und versuchst, konkrete Probleme zu lösen! Komisch finde ich die Lösung allerdings auch, aber Geschmackssache.

Ich werde es mal mit den Clocks machen wie ich es vor hatte, insofern keiner vll. noch den Tip des Jahres hat (aber bitte dran denken das ich das Design nicht großartig ummöbeln kann [will ])


Leider muss ich dir sagen, dass du mit dieser Einstellung nciht sehr weit kommen wirst. Das gehört zu den Hauptaufgaben eines Entwicklers, seine Leistung zu reflektieren und ggf. Umbauten vorzunehmen. Reflektieren kannst du ja anscheinend schon :D

Viel Erfolg für dein Spiel!

6

16.02.2015, 16:58

Leider muss ich dir sagen, dass du mit dieser Einstellung nciht sehr weit kommen wirst. Das gehört zu den Hauptaufgaben eines Entwicklers, seine Leistung zu reflektieren und ggf. Umbauten vorzunehmen. Reflektieren kannst du ja anscheinend schon
Hehe, nagut - aber bitte sei auch darauf hingewiesen das ich bis Ende Juli '15 meine eigene Deadline habe! Wenn ich wirklich das Design komplett ummöbeln will, habe ich mir für das zweite Projekt (bzw. hier den zweiten Versuch) vorgenommen mein Buch über Design Patterns zu fressen bevor ich erneut loslege. Das schlingt Zeit und die habe ich leider nicht :P

Aber natürlich bin ich gerne darauf aus Dinge zu ändern - man muss aber auch beachten das ich schon nen dicken Chunk als Anfänger gestemmt habe und ich meine Motivation unbedingt bis Ende Juli hochhalten will :D

KeksX

Community-Fossil

  • Private Nachricht senden

7

16.02.2015, 17:49

WIP Website: kevinheese.de

8

16.02.2015, 18:58

Ha genau das Buch hab ich ;)

BlueCobold

Community-Fossil

Beiträge: 10 152

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

9

17.02.2015, 06:52

Die Benamung ist ja grauenvoll, Bambi. Zudem ist die Logik von "onFrame" unsinnig. Du berechnest da auf sehr unschöne Weise ein Sekunden-Interval und kein generell gültiges Timing. Das war gar nicht gefragt. (Wenn das Game übrigens mal 2 Sekunden hängt, schießt die Waffe nie wieder) Und wofür "shootBegin" und "shootEnd" gut sein sollen und wozu auch noch public, das ist mir ebenfalls unklar.

Insgesamt denke ich auch, dass Code-Vorschläge generell keine gute Hilfe sind und bei so schlechtem Code erst recht nicht.
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]

Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von »BlueCobold« (17.02.2015, 06:59)


BlueCobold

Community-Fossil

Beiträge: 10 152

Beruf: Teamleiter Mobile Applikationen & Senior Software Engineer

  • Private Nachricht senden

10

17.02.2015, 13:54

Das hat weder was mit Network-Ready, noch mit Data-driven zu tun. Ich glaube diese Schlagworte solltest Du mal nachschlagen.
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]

Werbeanzeige