I guess I didn't explain the problem properly. I can make a script that extends a CollisionObject2D. I just can't attach that script to a new node. I have to attach it a built in type that already extends CollisionObject2D. Like Area2D or KinematicBody2D. But i don't want to attach my script to those nodes, I want to use it to make a new custom node (using the class_name keyword), but I can't do that because because to make a new custom node I would first need to make a CollisionObject2D and attach my script to it, and I can't do that because I can't create a CollisionObject2D node, since it's an abstract node.