Ich mache dieses Spiel, und es geht um Feinde. Es ist ziemlich langweilig für sie, die gleiche Geschwindigkeit zu behalten, also möchte ich, dass die Geschwindigkeit des Gegners steigt, wenn der Spieler höher abschneidet. Es ist schwierig, bestimmte Algorithmen mit Liebe zu erstellen, da mit dieser Game-Engine meist jedes Frame aktualisiert wird. Welches ist eigentlich das Problem, das mir gerade das Problem bereitet?Love2D Werte aktualisieren zu schnell
Der erste Teil meiner Logik korrekt ist (der Teil, wo die enemy.speed
steigt nach den player_score
10 geht), aber sobald es geht (oder erreicht) 10, der enemy.speed
Wert wird weiterhin von 10 jeden Rahmen erhöhen. Auch mit der enemiesReadyToSpeedUp
Boolean, die ich speziell aus diesem Grund eingesetzt habe! (um das enemy.speed
davon abzuhalten, schnell anzusteigen)
Sobald das Spielerergebnis 10 übersteigt, wird das Spiel unspielbar, da der Gegner beginnt, sich mit der "Lichtgeschwindigkeit" zu bewegen.
function enemySpeedUp()
-- Once player score > scoreLimit + 10, enemy's speed will increase by 10,
-- and the scoreLimit will increase by 10
enemiesReadyToSpeedUp = false
scoreLimit = 0
if(player_score >= scoreLimit + 10) then
enemiesReadyToSpeedUp = true
end
if(enemiesReadyToSpeedUp == true)then
enemy.speed = enemy.speed + 10
scoreLimit = scoreLimit + 10
enemiesReadyToSpeedUp = false
end
end
Dinge, die ich habe versucht:
- diese Funktion Schreiben so ziemlich das gleiche ohne booleans. (das heißt, ich erhöhe die gegnerische Geschwindigkeit, sobald die Geschwindigkeit des Spielers 10 übersteigt, anstatt einen booleschen Wert wahr zu machen und dann die Geschwindigkeit des Gegners basierend auf dem booleschen Wert zu erhöhen.)
- Hartes Codieren jeder möglichen Kombination, in der ein Gegner beschleunigen müsste. aber das erfordert eine Menge von if-Anweisungen, ist sehr ineffizient und ist auch nur im Allgemeinen schlechte Codierungspraxis. aber es funktioniert, und ich denke darüber nach, es zu tun, wenn nichts anderes funktioniert.
- Schließlich versuchte ich auch
enemy.speed = enemy.speed + player_speed
, aber das war ein ziemlich offensichtlicher Fehler alsenemy.speed
jeden Rahmen erhöht und ich habe das gleiche Ergebnis wie mein erster Fehler.
omg, ich danke dir so sehr, dass ich gar nicht merke, dass ich das mache. @Vlad –