private Vector3 CalculateDirectionAndSpread()
{
Ray ray = Camera.main.ViewportPointToRay(new Vector3(0.5f, 0.5f, 0));
RaycastHit hit;
Vector3 targetPoint;
if (Physics.Raycast(ray, out hit))
{
targetPoint = hit.point;
}
else
{
targetPoint = ray.GetPoint(100);
}
Vector3 direction = targetPoint - bulletSpawn.position;
direction.Normalize();
float u1 = 1.0f - UnityEngine.Random.value;
float u2 = 1.0f - UnityEngine.Random.value;
float randStdNormalX = Mathf.Sqrt(-2.0f * Mathf.Log(u1)) * Mathf.Sin(2.0f * Mathf.PI * u2);
float randStdNormalY = Mathf.Sqrt(-2.0f * Mathf.Log(u1)) * Mathf.Cos(2.0f * Mathf.PI * u2);
float x = randStdNormalX * spreadIntensity;
float y = randStdNormalY * spreadIntensity;
return direction + new Vector3(x, y, 0