- Home /
Question by
jordanblythe104 · Feb 21, 2013 at 05:56 AM ·
gunwith
Weird problem with gunscript
Shooting works fine. But when I reload, currentAmmo wont set back to maxAmmo. It just stays at 0. I have no idea what I have done wrong. Here is the code :
var bulletSpawn : GameObject;
var bullet : GameObject;
var weapon : GameObject;
var soundParent = Transform;
var currentAmmo = 30;
var maxAmmo = 30;
var canFire : boolean = false;
var fireSound : GameObject;
var reloadSound : GameObject;
var tacReloadSound : GameObject;
var reloadTime : float = 1.8;
var tacReloadTime : float = 1.5;
function Update ()
{
if (currentAmmo > 0)
canFire = true;
if (currentAmmo <= 0)
canFire = false;
if (currentAmmo > maxAmmo)
currentAmmo = maxAmmo;
if (Input.GetButtonDown("Fire") && canFire == true)
IsFiring ();
if (Input.GetButtonDown("Reload") && currentAmmo < maxAmmo)
Reload ();
}
function IsFiring ()
{
if (currentAmmo > 0 && canFire == true)
{
currentAmmo --;
Instantiate(bullet, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
weapon.animation.PlayQueued("Fire", QueueMode.PlayNow);
Instantiate(fireSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
}
if (currentAmmo == 0)
{
canFire = false;
Reload ();
}
}
function Reload ()
{
if (currentAmmo == 0)
{
animation.Play("Reload");
Instantiate(reloadSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
yield WaitForSeconds(reloadTime);
canFire = true;
currentAmmo = maxAmmo;
}
if (currentAmmo > 0 && currentAmmo < maxAmmo)
{
currentAmmo = 0;
animation.Play("TacReload");
Instantiate(tacReloadSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
canFire = false;
yield WaitForSeconds(tacReloadTime);
canFire = true;
currentAmmo = maxAmmo;
}
}
Please help!
Comment
Best Answer
Answer by jordanblythe104 · Feb 26, 2013 at 12:16 AM
I fixed the problem. The problem was caused by me not putting the reload sound game object in the inspector
Answer by Kylelem62 · Feb 21, 2013 at 07:33 AM
Consider making maxAmmo a constant, if that fixes the problem then an outside script or possibly inspector could have been responsible. There is also no operand at line 20.
var bulletSpawn : GameObject;
var bullet : GameObject;
var weapon : GameObject;
var soundParent = Transform;
var currentAmmo = 30;
var maxAmmo = 30;
var canFire : boolean = false;
var fireSound : GameObject;
var reloadSound : GameObject;
var tacReloadSound : GameObject;
var reloadTime : float = 1.8;
var tacReloadTime : float = 1.5;
function Update ()
{
if (currentAmmo > 0)
canFire = true;
if (currentAmmo maxAmmo)//There is no operand here
currentAmmo = maxAmmo;
if (Input.GetButtonDown("Fire") && canFire == true)
IsFiring ();
if (Input.GetButtonDown("Reload") && currentAmmo < maxAmmo)
Reload ();
}
function IsFiring ()
{
if (currentAmmo > 0 && canFire == true)
{
currentAmmo --;
Instantiate(bullet, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
weapon.animation.PlayQueued("Fire", QueueMode.PlayNow);
Instantiate(fireSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
}
if (currentAmmo == 0)
{
canFire = false;
Reload ();
}
}
function Reload ()
{
if (currentAmmo == 0)
{
animation.Play("Reload");
Instantiate(reloadSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
yield WaitForSeconds(reloadTime);
canFire = true;
currentAmmo = maxAmmo;
}
if (currentAmmo > 0 && currentAmmo < maxAmmo)
{
currentAmmo = 0;
animation.Play("TacReload");
Instantiate(tacReloadSound, bulletSpawn.transform.position, bulletSpawn.transform.rotation);
canFire = false;
yield WaitForSeconds(tacReloadTime);
canFire = true;
currentAmmo = maxAmmo;
}
}
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
Make player unable to shoot when reloading 3 Answers
Script suddenly stopped working properly 1 Answer