hey, i’m trying to spawn enemy into my main scene, but the problem is the enemy script has a line that look like this
func _physics_process(delta):
# Get the direction towards the player
var player_position = $Player.global_position
direction = (player_position - global_position).normalized()
normally it works fine, but if i tried to instantiate the scene, it give me error
Invalid get index “global_position”(on base: ‘null instance’.
basically what i was trying to accomplished is
spawn the enemy
make the enemy follow player.
also this is how i intantiate it
func _on_timer_timeout():
var Enemy= enemy.instantiate()
add_child(Enemy)
Enemy.position = $Spawn_1.global_position
How does your scene tree look like? If you get this error, it means the node path you’re using is wrong! That is, the node your script is attached to, does not have a direct child called “Spawn_1” at the time this function is run. Therefore, get_node (and it’s short form using just $) returns a null instance instead of a node, which obviously doesn’t have the global_position property (or any other property) you’re trying to set.
The _physics_process function you posted above is in your enemy script, but referencing $Player, which only would work if the Player was a child node of your enemy, which is probably isn’t. Doing get_parent().get_node("Player") instead should work in your case, but might break if you change the tree structure. A better way would be to set a variable in your enemy scene when instantiating it, that holds a reference to the player node:
var player_node
func _physics_process(delta):
var player_position = player_node.global_position
direction = (player_position - global_position).normalized()