im debugging whats actually happening when instancing a decal
so i made a simple arrow model to place when the raycast hits
2things are happening, i cant figure it out:
1 no matter what lookat function i use the arrow gets placed the same way(seems like global coordinates)
2 the arrow gets scaling applied to it depending on the object it hit

func firebullet():
var screen_pos = reticle.get_global_transform_with_canvas().origin
var add = reticle.get_texture().get_size().x /2
var wantedpos = Vector2(screen_pos.x +add, screen_pos.y +add)
var camera = self
var from = camera.project_ray_origin(wantedpos)
var to = from + camera.project_ray_normal(wantedpos) * ray_length
var space = get_world_3d().direct_space_state
var phys = PhysicsRayQueryParameters3D.new()
phys.from = from
phys.to = to
phys.collision_mask = 1
var result = space.intersect_ray(phys)
if result:
var collider = result.collider
var n = result.normal
var p = result.position
print(n)
#this is a decal scene>
var impact = impact_normal.instantiate()
collider.add_child(impact)
impact.global_transform.origin = p
impact.look_at_from_position(p,p + n, Vector3.UP)
#impact.look_at(p , Vector3.UP)same result
#impact.look_at(p , Vector3.RIGHT)same result why?
so what is actually going on? how do i point the arrow to the hit normal UP, and prevent the scaling?