Hi, I have a trap scene that has the function _BuildTrap() in its attached script.
In the player character, I have this snippets of code to trigger it, but when I play and try to trigger it, I get the error “Invalid call. Nonexistent function ‘_BuildTrap’ in base ‘Nil’.” which I guess means that var trap doesn’t get the right scene and can’t find the function to trigger. Could someone help me with it? I am sorry if this is a stupid question but I am new to programming
Thanks in advance
var trap = null
..
if event.is_action_pressed("interact") and CollidingWithTrap == true :
trap._BuildTrap()
...
func _on_area_3d__player_collision_detector_area_entered(area):
if area.is_in_group("Trap"):
var trap = get_tree().get_first_node_in_group("Trap")
print(trap)
CollidingWithTrap = true
make the logic exactly the opposite, the trap will expect a collision of the player to enter it, so in the trap you should test area.is_in_group("Player")
Initially that’s how it was set up, but I found that if I placed down more than 1 trap, all of them would trigger, hence why I am assigning the value of trap dynamically inside the player’s controller script
but that means you’ve done something wrong, because it shouldn’t work that way. if a player collides with one collision, the other collisions can’t collide
is CollidingWithTrap a global variable? if you had it like this in the previous version, this could be a problem, it could trigger all traps
but this is conceptually correct, because imagine that you will add more and more objects to the game and you will control it with the player… it’s not very ideal