Unity2D transform.right не прямой

Я пишу 2D шутер на Unity. Стрельбу я решил сделать через Raycast и Trail, написав вот такой скрипт:

    void Shot()
    {
        if (BuletScoreInGun == 0) return;
        ShackCamera.SetTrigger("");
        RaycastHit2D[] ray = new RaycastHit2D[Rays];
        FireEffect.Play();
        for (int i = 0; i < ray.Length; i++)
        {
            Vector2 directtion = GetDirection();
            ray[i] = Physics2D.Raycast(BulletSpawnPoint.position, directtion, range, DestroyLayer);
            TrailRenderer trail = Instantiate(BulletTrail, BulletSpawnPoint.position, BulletSpawnPoint.rotation);
            StartCoroutine(SpawnTrail(trail, ray[i]));
        }
        BuletScoreInGun--;
    }

    Vector3 GetDirection()
    {
        Vector2 directtion = transform.right;

        directtion += new Vector2(
            Random.Range(-BuletSpreadVariance.x, BuletSpreadVariance.x),
            Random.Range(-BuletSpreadVariance.y, BuletSpreadVariance.y));

        directtion.Normalize();
        return directtion;
    }

    private IEnumerator SpawnTrail(TrailRenderer Trail, RaycastHit2D Hit)
    {
        float time = 0;
        Vector2 startPoint = Trail.transform.position;
        Vector2 directtion = GetDirection();

        if (Hit)
        {
            while (time < 1)
            {
                Trail.transform.position = Vector3.Lerp(startPoint, Hit.point, time * 2);
                time += Time.deltaTime / Trail.time;

                yield return null;
            }
            Trail.transform.position = Hit.point;
            Destroy(Trail.gameObject, Trail.time);
        }
        else
        {
            while (time < 1)
            {
                Trail.transform.position = Vector3.Lerp(startPoint, (pl.isFacingRight == false ? directtion : -directtion) * range, time);
                time += Time.deltaTime / Trail.time;

                yield return null;
            }
            Destroy(Trail.gameObject, Trail.time);
        }
    }

Но когда я стреляю в воздух, выполняется условие что мы не во что не попали. И пуля стреляет в сторону transform.right * range (без учета GetDirection()). Но пуля слегка отклоняется и из-за этого она случайно может попасть в врага, но пуля пролетит сквозь него.


Ответы (0 шт):