надо поиграть с вектором пули и нормалью поверхности, накидал быстрый скрипт как идею но лучше все довести до ума
Camera _mCam;
Vector2 _mousePos;
[SerializeField] ContactFilter2D _filders;
RaycastHit2D[] _hits;
LineRenderer _lineRenderer;
private void Start()
{
_mCam=Camera.main;
_hits=new RaycastHit2D[1];
_lineRenderer = gameObject.AddComponent<LineRenderer>();
_lineRenderer.widthMultiplier = 0.2f;
_lineRenderer.positionCount = 3;
}
private void Update()
{
Vector2 mousePos = _mCam.ScreenToWorldPoint(Input.mousePosition);
if(Physics2D.Linecast(transform.position, mousePos, _filders, _hits)>0)
{
_lineRenderer.enabled = true;
_lineRenderer.SetPosition(0, transform.position);
_lineRenderer.SetPosition(1, _hits[0].point);
Vector2 v2= _hits[0].point- (Vector2)transform.position; // делаю вектор направления
_lineRenderer.SetPosition(2, v2*_hits[0].normal); // умножаю вектор направления на нормаль
}
else
{
_lineRenderer.enabled = false;
}
}