Heavy Weapons Guy
Heavy Weapons Guy

Reputation: 49

Invalid set index 'value' (on base: 'null instance') with value type of float

I have a game I'm making in Godot, 2D I have a progres sbar called "Healthbar" I'm trying to set it's value to the players HP value the full code is as follows

extends KinematicBody2D
var health: float = 100
func ready():
    pass

export var movespeed : int
export var batteryspeed: int
var battery = preload("res://Bullet.tscn")

func _physics_process(delta):
    get_tree().get_root().find_node("HealthBar").value = health
    var motion = Vector2()
    if (health <= 0):
        gameover()
    if(Input.is_action_pressed("MoveUp")):
        motion.y -= 1
    if(Input.is_action_pressed("MoveLeft")):
        motion.x -= 1
    if(Input.is_action_pressed("MoveDown")):
        motion.y += 1
    if(Input.is_action_pressed("MoveRight")):
        motion.x += 1
    motion = motion.normalized()
    motion = move_and_slide(motion * movespeed)
    if(Input.is_action_just_pressed("Fire")):
        fire()
    
    look_at(get_global_mouse_position())
func fire():
    var batteryInstance = battery.instance()
    batteryInstance.position = position
    batteryInstance.rotation_degrees = rotation_degrees
    batteryInstance.apply_impulse(Vector2(), Vector2(batteryspeed, 0).rotated(rotation))
    get_tree().get_root().call_deferred("add_child", batteryInstance)

func gameover():
    get_tree().reload_current_scene()
    
    

func _on_Area2D_body_entered(body):
    if "Enemy" in body.name:
        health -= 10

and the part I'm having issues with, I suspect is

    get_tree().get_root().find_node("HealthBar").value = health

What do I do to set the progressbar value to the health variable?

Upvotes: 0

Views: 898

Answers (1)

Heavy Weapons Guy
Heavy Weapons Guy

Reputation: 49

It turns out you must use the function

{Progress Bar}.set_value({value})

Upvotes: 0

Related Questions