Do you know why raycast stops when it detects a block below itself (not just in itself)

scoreboard players remove @s bow_shoot_steps 1

execute as @s at @s run tp @s ^ ^ ^0.5

#execute as @s at @s run tp @s ~ ~ ~ ~ ~0.1

execute at @s run particle minecraft:crit ~ ~1 ~ 0 0 0 0 1 force

execute at @s run damage @e[type=!player,distance=..2,limit=1] 10

execute unless block ~ ~ ~ #gun:weak run tag @s add hitblock

execute as @s[tag=!hitblock,scores={bow_shoot_steps=1..}] at @s run function gun:bow/move2

Continue to help post