Help with doing blockouts for 2d levels (non tilemapped game)

Godot Version

godot 4.5.1

Question

i am making a top down game with manually drawn areas instead of using tilemaps with invisible collision meshes then placed onto them (an example of what im going for would be whats done for among us and super animal royale) and want to use blockout (like you would in 3d with bsp based engine level editors) to do the base level design. i have the feeling that i am not doing it properly though as there are many annoyances i have faced whilst doing so.

first, i had to manually put together an object to work as a bsp like brush, and while it does function there are a few problems with it.

first, despite both the colorrect and collisionshape2d being the default size, they are ever so slightly off.

second, whenever i got to stretch them to do the blockout, it stretches in an unpreferred way.

this makes it frustrating to have to move the brushes AND guess where they would need to be stretched to before being moved.

this is how i would prefer the stretching to be done (example recorded in inkscape)

as you can see, it would be easier to just have the brush placed and then stretched exactly as needed.

is there any way to do that? and could my brush scene be improved?

Hello,

That’s not possible unless it’s a godot bug (which I don’t think). Your brush, collisionshape or color rect position may be set with an offset (not 0,0). Also check your collisionshape rectangle size is correct.

That’s how strectching works in the editor. You have to write your own script for runtime if you want the inkspace behaviour.

You can also try to only change the shape rectangle of the collisionshape for scaling. I think that’s a better solution and probably easier to implement.

how do you edit the collisionshape rectangle when its instantiated in a scene?

ok so i have figured out that the resize box of the collisionshape2d that works like the inkscape demonstration affects the size property, not scale. is there a way to have that type of resizer available in the scale property? if not, then why? it would be very useful for doing map blockouts among other things.