cannot convert from 'UnityEngine.Quaternion' to 'UnityEngine.Transform'

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class shootscript : MonoBehaviour
{
public Transform Gun;

Vector2 direction;

public GameObject Bullet;

public float BulletSpeed;

public Transform ShootPoint;

// Start is called before the first frame update
void Start()
{
    
}

// Update is called once per frame
void Update()
{
    Vector2 mousePos = Camera.main.ScreenToWorldPoint(Input.mousePosition);
    direction = mousePos - (Vector2)Gun.position;
    FaceMouse();
    
    if(Input.GetMouseButtonDown(0))
    {
        shoot();
    } 
}

void FaceMouse()
{
    Gun.transform.right = direction;
}

void shoot()
{
    GameObject BulletIns = Instantiate(Bullet,ShootPoint.rotation);
    BulletIns.GetComponent<Rigidbody2D>().AddForce(BulletIns.transform.right * BulletSpeed);
}

},

That's because the declaration for Instantiate that only takes two arguments expects the Transform of the GameObject you want it to be a child of.

Instantiate(Object original, Transform parent);

As it seems that you are trying to instantiate a *bullet* GameObject, I suggest you to use the full declaration for the Instantiate method:

Instantiate(Object original, Vector3 position, Quaternion rotation, Transform parent);

Instantiate method takes position as second parameter, and you are passing it rotation that’s why it is giving you error. What you can do is change GameObject BulletIns = Instantiate(Bullet,ShootPoint.rotation); to GameObject BulletIns = Instantiate(Bullet, ShootPoint.position, ShootPoint.rotation);