I'm trying to make a drag and drop "game" but when the main node collides with the other, it emits a signal but I keep getting an error saying that the node cannot be found. Here is all my code so far. I definitely made a mistake somewhere I just don't know where.
extends Node2D
signal raycast_object_hit
var selected = false
var colUP = false
var colDOWN = false
var colLEFT = false
var colRIGHT = false
onready var rayUP = $UP
onready var rayDOWN = $DOWN
onready var rayLEFT = $LEFT
onready var rayRIGHT = $RIGHT
onready var attachment = get_node("RigidBody2D")
func _ready():
attachment.connect("raycast_object_hit", self, _collision_detection())
func _on_Area2D_input_event(viewport, event, shape_idx):
if Input.is_action_just_pressed("click"):
selected = true
func _physics_process(delta):
_collision_detection()
if selected:
global_position = lerp(global_position, get_global_mouse_position(), 25 * delta)
func _input(event):
if event is InputEventMouseButton:
if event.button_index == BUTTON_LEFT and not event.pressed:
selected = false
func _collision_detection():
var space_state = get_world_2d().direct_space_state
var collision = space_state.intersect_ray(Vector2(0, 0), Vector2(50, 100))
if rayUP.is_colliding():
if colUP == false:
colUP = true
else:
colUP = false
print("Collision")
emit_signal("raycast_object_hit", rayUP.get_collider())
if rayDOWN.is_colliding():
if colDOWN == false:
colDOWN = true
else:
colDOWN = false
print("Collision")
emit_signal("raycast_object_hit", rayDOWN.get_collider())
if rayLEFT.is_colliding():
if colLEFT == false:
colLEFT = true
else:
colLEFT = false
print("Collision")
emit_signal("raycast_object_hit", rayLEFT.get_collider())
if rayRIGHT.is_colliding():
if colRIGHT == false:
colRIGHT = true
else:
colRIGHT = false
print("Collision")
emit_signal("raycast_object_hit", rayRIGHT.get_collider())