Ich arbeite an einem Raumschiff Shooter Stil Spiel. Im Spiel gibt es sich langsam bewegende Raketen, die ich auf verschiedenen Aufgaben leite.Wie viele Aufgaben sind zu viele
Task t4 = new Task(() => fireShipCannons());
Sie tun nicht viel; Bewegen Sie einfach eine kleine Bitmap über den Bildschirm. Normalerweise ist es eine for-Schleife mit 30 Iterationen. Das Problem ist, dass das Timing ausgeschaltet ist und einige Aufgaben Vorrang vor anderen haben. Ich bin auch wichtig zu beachten, dass ich Thread.Sleep (100) verwende, um die Geschwindigkeit der Raketen zu steuern. Wegen dieser Verlangsamung wird die Methode für einige Sekunden ausgeführt.
I C# verwenden, .net, Windows Form Anwendung
Ich habe Stunden damit verbracht, darüber nachzudenken, wie diese neu zu formulieren, und ich denke, es ist richtig formuliert ist. Das Problem, das ich hatte, war breit; Ja, die Frage ist vielleicht ein bisschen breit. Ich habe eine tolle Antwort bekommen! Bedeutet das nicht, dass die Frage richtig gestellt wurde?
Sie sollten keine Aufgabe für jedes Objekt im Spiel hochziehen. Tatsächlich gibt es normalerweise eine einzige Schleife, um alle Änderungen im Spiel zu steuern. Aus Gründen der Einfachheit sieht die Schleife so aus: while (isGameRunning) { Update (DateTime.UtcNow); Rendern(); } Sie sollten nur den tatsächlichen Geschwindigkeitsvektor für jedes Objekt im Spiel kennen und die neue Position in der Update-Methode berechnen. Dann zeichnet die Render-Methode den aktuellen Zustand - egal wie viel Zeit seit der letzten Aktualisierung vergangen ist, da die Entfernung angepasst wird. – Artak