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,;

        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);
            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.

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.