void Update()
{
float vertical = Input.GetAxis("Vertical");
float horizontal = Input.GetAxis("Horizontal");

transform.position += new Vector3(horizontal, vertical, vertical) * (Time.deltaTime * 3f);
//transform.Translate(new Vector3(horizontal,vertical,vertical) *(Time.deltaTime * 3f));
//RotateToTarget2D(transform, target.transform.position, 3f);
//var transformPosition = target.transform.position - transform.position;

if (Input.GetMouseButtonDown(0))
{
var mouse = Input.mousePosition;
mouse = Camera.main.ScreenToWorldPoint(Input.mousePosition);
mouse = new Vector3(mouse.x, mouse.y, this.transform.position.z);
LaunchProjectile(mouse, 0);
LaunchProjectile(mouse, 30);
LaunchProjectile(mouse, -30);
}
}

GameObject LaunchProjectile(Vector3 targetPoint, float angle)
{
var projectileObject = Instantiate(projectile, this.transform.position,
Quaternion.identity);
projectileObject.transform.Rotate((GetQuaternionBetweenPoints(this.transform.position, targetPoint).eulerAngles
+ new Vector3(0,0, angle)));
return projectileObject;
}

float GetAngleBetweenPoints(Vector3 self, Vector3 target)
{
Vector3 selfToTargetVector = target - self;
return Mathf.Atan2(selfToTargetVector.y, selfToTargetVector.x) * Mathf.Rad2Deg;
}

Quaternion GetQuaternionBetweenPoints(Vector3 self, Vector3 target)
{
return Quaternion.AngleAxis(GetAngleBetweenPoints(self, target), Vector3.forward);
}