I think you should go with now physics at all. I don't know exactly what you are aiming for, but if you want a tetris like game where blocks fall in increasements than you just could got with a function which makes your collision test and you are fine:
func SurroundedBlocks(pos):
surroundingBlocks = []
normal_vectorlist = [Vector2(1,0),Vector2(0,1)]
directions = [1,-1]
for d in directions:
for v in normal_vecorlist:
p = v*d
for block in get_node("parentOfAllBlocks").get_children():
if block.get_pos() == pos:
surroundingBlocks.append(block)
return surroundingBlocks
Than you can check which blocks in that list do have the same color...
You also would need a function to check when the block reached the ground. but this should be easy to get:
func onGound(blockGroup): #check if on ground
for b in blockGroup: #you have to check for all teh blocks in one form
for block in get_node("parentOfAllBlocks").get_children():
#chek for all possible colliders
if b.get_pos + Vecor2(0,-1) == pos:
return true #if found one exit functin and return true
return false #if there was nothing in the whole list return false
code could have some mistakes (didn't test it) so go throu it yourself or ask me if there are problems.