LineRenderer.SetPosition index out of bounds! Help!

when I run this code it gives me the error:

LineRenderer.SetPosition index out of bounds!
UnityEngine.LineRenderer:SetPosition(Int32, Vector3)
raycast:Update() (at Assets/Keep/Pack/raycast.cs:66)

here is the code:

using UnityEngine;
using System.Collections;

public class raycast : MonoBehaviour {

public int gunDamage = 1;                                             
public float fireRate = 0.25f;                                     
public float weaponRange = 50f;                                     
public float hitForce = 100f;                                      
public Transform gunEnd;     
public Camera fpsCam; 
                                        

private WaitForSeconds shotDuration = new WaitForSeconds(0.07f); 

private AudioSource gunAudio;                                      

private LineRenderer laserLine;                                    

private float nextFire;                                            



void Start () 
{

    

    laserLine = GetComponent<LineRenderer>();

    gunAudio = GetComponent<AudioSource>();

}


void Update () 
{
          if (Input.GetButtonDown("Fire1") && Time.time > nextFire) 
    {
         nextFire = Time.time + fireRate;

        StartCoroutine (ShotEffect());

        Vector3 rayOrigin = fpsCam.ViewportToWorldPoint (new Vector3(0.5f, 0.5f, 0.0f));

        RaycastHit hit;
    
        Debug.DrawRay(transform.position, rayOrigin, Color.green);

        laserLine.SetPosition (1, gunEnd.position);

        if (Physics.Raycast (rayOrigin, fpsCam.transform.forward, out hit, weaponRange))
        {
            laserLine.SetPosition (0, hit.point);

            ShootableBox health = hit.collider.GetComponent<ShootableBox>();

            if (health != null)
            {
                health.Damage (gunDamage);
            }

            if (hit.rigidbody != null)
            {
                hit.rigidbody.AddForce (-hit.normal * hitForce);
            }
        }
        else
        {
            laserLine.SetPosition (1, rayOrigin + (fpsCam.transform.forward * weaponRange));
        }
    } 

    }

private IEnumerator ShotEffect()
{
    gunAudio.Play ();

    laserLine.enabled = true;

    yield return shotDuration;

    laserLine.enabled = false;
}

}

@spacechicken27 I had the same error, but I think I fixed it. Try and change the size under Positions on you’re Line Renderer to 2. This fixed the error for me.

Well, When messing around I added a mesh collider to my gun and made sure the gunEnd was far enough away from the gun, and it worked… somehow. I did not change any code.

IMPORTANT REVISION!!
after just playing with it for a few minutes seeing how it behaved when I aimed in different ways, I stopped running the program, ran it again, and the error appeared again!!! i did not change anything!

Having the same issue, and now I’m giving up on searching for answers for now, because this is just aggrivating. I did what you said, nothing really changed.