Hi, I’m having trouble with this script. I am trying to use a shoot script, but it gives out the error that I havent declared the variable, but it also appears a warning that says that I declared it but it isn’t used, how can I fix it? It seems like it was reading the script backwards. The error reads : “error CS0841: A local variable `holdSound’ cannot be used before it is declared” Line 63
Gun Script:
using UnityEngine;
using System.Collections;
public class Shoot : MonoBehaviour {
public float holdHeight= -0.5f;
public float holdSide = 0.5f;
public float racioHipHold = 1f;
public float hipToAimSpeed = 0.1f;
private float racioHipHoldV ;
public float aimRacio = 0.4f;
public float zoomAngle = 30f;
public float fireSpeed = 15f;
private float waitTilNextFire = 0f;
public GameObject bullet;
public GameObject bulletSpawn;
public float shootAngleRandomizationAiming = 5f;
public float shootAngleRandomizationNotAiming = 15f;
public float recoilAmount = 0.5f;
public float recoilRecoverTime= 0.2f;
private float currentRecoilZPos;
private float currentRecoilZPosV;
public GameObject bulletSound;
public GameObject muzzleFlash;
public GameObject muzzleFlashSpawn;
//Unlocks
private bool weaponUnlocked = false;
void Update ()
{
if (Input.GetButton("Fire1"))
{
if (waitTilNextFire <= 0)
if (weaponUnlocked == true)
{
if (bullet)
{
Instantiate(bullet, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
}
if (bulletSound)
{
var holdSound = Instantiate(bulletSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
}
if (muzzleFlash)
{
var holdMuzzleFlash = Instantiate(muzzleFlash, muzzleFlashSpawn.transform.position, muzzleFlashSpawn.transform.rotation);
}
currentRecoilZPos -= recoilAmount;
waitTilNextFire = 1;
if (holdSound)
{
holdSound.transform.parent = transform;
}
if (holdMuzzleFlash)
{
holdMuzzleFlash.transform.parent = transform;
}
}
}
waitTilNextFire -= Time.deltaTime * fireSpeed;
currentRecoilZPos = Mathf.SmoothDamp(currentRecoilZPos, 0f, ref currentRecoilZPosV, recoilRecoverTime);
}
}