extends CharacterBody2D var lifeTime = 0.6 @onready var parent = get_parent() var lastPos = null var detecting = true func objectHit(body): if body != self: velocity = Vector2.ZERO parent.grappleStart() func _physics_process(delta): if not lastPos: lastPos = position move_and_slide() if detecting: if lifeTime <= 0: velocity = Vector2.ZERO parent.retracting = true parent.retractStart = position lifeTime -= delta var space_state = get_world_2d().direct_space_state var query = PhysicsRayQueryParameters2D.create(lastPos, position, 3, [parent.get_parent().get_parent()]) var result = space_state.intersect_ray(query) if result: detecting = false position = result.position objectHit(result.collider) print(result.position)