Godot Version
v4.2.1
Question
I use tweens for smoother health depletion. Even though I check both players before tweeting over their properties still it does not work. Whenever their ref is deleted and the game is still running it generates this error.
Error
Invalid get index ‘health’ (on base: ‘previously freed’).
Code
func update_health():
var tween = get_tree().create_tween()
if player_1:
if "health" in player_1:
tween.tween_property(hp_bar_P1, "value", player_1.health, .1).set_trans(Tween.TRANS_QUAD)
if player_2:
if "health" in player_2:
tween.tween_property(hp_bar_P2, "value", player_2.health, .1).set_trans(Tween.TRANS_QUAD)
Explanation
Whenever the players are _ready, they assign their ref to the global GameManager script. Which handles basically everything.
Found a Fix
Checking if they are not equal to null stops this problem for now at least but every now and then it generates the same error. Any Tips?
if player_1 != null:
if "health" in player_1:
tween.tween_property(hp_bar_P1, "value", player_1.health, .1).set_trans(Tween.TRANS_QUAD)
if player_2 != null:
if "health" in player_2:
tween.tween_property(hp_bar_P2, "value", player_2.health, .1).set_trans(Tween.TRANS_QUAD)