1 Pluspunkt 0 Minuspunkte
Ich möchte einer Gun in meinem Spiel eine Variable für Effektivität geben so dass sie z.b 30 Schaden auf 10 Meter verursacht. Und wenn die Collision 30 Meter entfernt vom Player ist soll die Effektivität dann dementsprechend berechnet werden. Wie berechne ich das am besten? Ich habe es versucht wie bei einer Textrechnung. 10 Meter sind 30 HP, 30 Meter sind wieviel? Aber ich komme da irgendwie zu keinem sinnvollen Ergebnis.
von  

1 Antwort

0 Pluspunkte 0 Minuspunkte

In dieser Funktion nimmt der Schaden bis zur maximalen Reichweite (max_range) linear ab und fällt dann auf 0. Innerhalb von max_effective_range wird der maximale Schaden (base_damage) zugefügt. Zwischen max_effective_range und max_range wird der Schaden reduziert.

# Maximaler Schaden
var base_damage = 30
# Maximale Reichweite 
var max_effective_range = 10
# Maximaler Schaden
var max_range = 130


func calculate_damage(distance):
    if distance > max_range:
        return 0
    return base_damage * max(0, (1 - (distance - max_effective_range) / (max_range - max_effective_range)))
von (1.0k Punkte)