При стрельбе отображается только один луч , хотя происходят все выстрелы . код связаный с лайн-рендерером отмечен //////

using System.Collections.Generic;
using UnityEngine;
using UnityEngine.UI;
public enum WeaponShootType
{

    AUTO,
    MANUAL
}

public class Shooting : MonoBehaviour
{
    public WeaponShootType shootType;



    public Transform Muzzle;
    public LineRenderer laserLineRenderer;
    public GameObject ShootParticle;
    public GameObject OnHitParticle;
    float RayTimer;
    public float RayLifeTime = 0.2f;
    float effectsDisplayTime = 0.2f;
    public Text Ammotext;
    public Text AmmoCounttext;
    Animator Anim;
    AudioSource gunAudio;
    //   public AudioClip ShootSound;
    public AudioClip ReloadSound;

    public float DamagePerShoot;
    public int BulletsPerShot;
    public float delayBetweenShots;
    public float SpreadAngle;
    public float ShootingRange;
    public int AmmoPerShoot;
    public int MaxAmmo;
    public int AmmoCount;
    public int CurAmmoInClip;
    public int Clip;

    [SerializeField]
    float LastShot;
    [SerializeField]
    bool isfiring;


    Camera cum;


    //////////////////////////////////////////////////////////////////////

    public void DisableEffects()
    {
        laserLineRenderer.enabled = false;

    }

    //////////////////////////////////////////////////////////////////////

    void Awake()
    {


        Anim = GetComponent<Animator>();
        gunAudio = GetComponent<AudioSource>();

        CurAmmoInClip = Clip;
        AmmoCount = MaxAmmo;


    }



    //////////////////////////////////////////////////////////////////////

    private void Start()
    {
        Vector3[] initLaserPositions = new Vector3[2] { Vector3.zero, Vector3.zero };
        laserLineRenderer.SetPositions(initLaserPositions);
        Anim = GetComponent<Animator>();
        Anim.enabled = false;

    }


    //////////////////////////////////////////////////////////////////////

    void Update()
    {
        switch (shootType)
        {
            case WeaponShootType.MANUAL:
                ; break;

            case WeaponShootType.AUTO:
                if (isfiring)
                {

                    TryShoot();

                }
                break;


        }


    //////////////////////////////////////////////////////////////////////


        RayTimer += Time.deltaTime;

        if (RayTimer >= RayLifeTime * effectsDisplayTime)
        {
            DisableEffects();
        }


        //////////////////////////////////////////////////////////////////////
    }





    public bool TryShoot()
    {
        if (CurAmmoInClip != 0 && Time.time > LastShot + delayBetweenShots)
        {
            Shoot();

            return true;
        }
        return false;
    }


    public Vector3 GetFirigDirection()
    {
        cum = GetComponentInParent<Camera>();
        float Spread = Random.Range(0, SpreadAngle);
        Vector3 dir = (cum.transform.forward);

        dir = Quaternion.AngleAxis(Spread, cum.transform.right) * dir;

        dir = Quaternion.AngleAxis(Random.Range(0, 360), cum.transform.forward) * dir;

        return dir;
    }

    //////////////////////////////////////////////////////////////////////

    RaycastHit hit;
    public void Shoot()
    {
        LastShot = Time.time;
        if (CurAmmoInClip >= AmmoPerShoot)
        {
            CurAmmoInClip -= AmmoPerShoot;
            Instantiate(ShootParticle, Muzzle.position, Quaternion.identity);

            Anim.Play("Shooting");

            for (int i = 0; i < BulletsPerShot; i++)
            {
                Vector3 BulletLook = GetFirigDirection();




                RayTimer = 0f;



                if (Physics.Raycast(cum.transform.position, BulletLook, out hit))
                {

                    //   print(hit.point);
                    laserLineRenderer.enabled = true;
                    GameObject Enemy = hit.collider.gameObject;
                    DamageSystem dmg = Enemy.GetComponent<DamageSystem>();
                    laserLineRenderer.SetPosition(0, Muzzle.position);
                    laserLineRenderer.SetPosition(1, hit.point);

                    Instantiate(OnHitParticle, hit.point, Quaternion.identity);

                    if (dmg != null)
                    {
                        dmg.TakeDamage(DamagePerShoot);
                    }



                }



                else return;

            }

            //////////////////////////////////////////////////////////////////////


            //       if (ShootSound)
            //  {
            //    gunAudio.PlayOneShot(ShootSound);
            // }
        }

    }
    public void TryReload()
    {
        if (CurAmmoInClip != Clip && AmmoCount > 0)
        {
            Reload();
        }

    }

    public void Reload()
    {

        AmmoCount -= Clip;
        CurAmmoInClip = Clip;
        Anim.Play("Reload");
    }



    public void AmmoRestore(int AmmoFromPickUp)
    {
        if (AmmoCount != MaxAmmo)
        {
            AmmoCount += AmmoFromPickUp;
        }
    }

    public void Use()
    {
        switch (shootType)
        {
            case WeaponShootType.AUTO:
                isfiring = true;
                break;



            case WeaponShootType.MANUAL:
                TryShoot();
                break;
        }

    }

    public void Enduse()
    {
        switch (shootType)
        {
            case WeaponShootType.AUTO:
                isfiring = false;
                break;



            case WeaponShootType.MANUAL:
                break;
        }

    }

} 

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