- Home /
Unity Reload Bullets left
Hello, I am making a first person shooter game, but I have a problem with calculating bullets left. I want it so if you have like 5/7 bullets in the pistol and 14 bullets left and you reload it goes to 9 bullets left not 7.
Here is my code
#pragma strict
var bulletPrefab : Transform;
var shootForce : float = 3000;
var damage:float = 20;
var range = 100.0;
var force = 10.0;
var Aim : boolean = false;
var ADSCam : GameObject;
var muzzleFlash : Renderer;
var muzzleLight : Light;
var bulletsInClip = 7;
var clips = 3;
function Start ()
{
muzzleFlash.enabled = false;
muzzleLight.enabled = false;
}
function Update () {
if(Input.GetMouseButtonUp(0)){
if(bulletsInClip >= 1){
fire();
//audio clip
}
}
if (Input.GetKeyDown (KeyCode.R)){
if(bulletsInClip <= 7){
Reload();
}
}
if(Input.GetMouseButtonDown(1)){
Aim = true;
}
if(Input.GetMouseButtonUp(1)){
Aim = false;
}
if(Aim == true){
ADSCam.active = true;
} else {
ADSCam.active = false;
}
}
function fire(){
bulletsInClip--;
var instanceBullet = Instantiate(bulletPrefab,transform.position,Quaternion.identity);
instanceBullet.rigidbody.AddForce(transform.forward*shootForce);
var direction = transform.TransformDirection(Vector3.forward);
var hit : RaycastHit;
// Did we hit anything?
if (Physics.Raycast (transform.position, direction, hit, range)) {
Debug.DrawRay(transform.position, direction * range);
// Apply a force to the rigidbody we hit
if (hit.rigidbody)
hit.rigidbody.AddForceAtPosition(force * direction, hit.point);
hit.collider.SendMessageUpwards("ApplyDamage", damage, SendMessageOptions.DontRequireReceiver);
}
muzzleFlash.renderer.enabled = true;
muzzleLight.enabled = true;
yield WaitForSeconds (0.04);
muzzleFlash.renderer.enabled = false;
muzzleLight.enabled = false;
}
function OnTriggerEnter(hit:Collider){
if(hit.tag == "Enemy"){
hit.transform.SendMessage("Damage",damage);
}
}
function OnGUI(){
GUI.Label (Rect (10, 10, 100, 200), "Bullets left: " + bulletsInClip);
GUI.Label (Rect (10, 30, 100, 200), "Clips left: " + clips * 7);
}
function Reload(){
yield WaitForSeconds (1.25);
bulletsInClip = 7;
clips = (clips - 1);
}
Answer by KellyThomas · Jan 12, 2014 at 01:37 AM
Insert this under line 11:
var clipSize: int = 9;
Replace line 85 with:
bulletsInClip = clipSize;
Now you can set the clip size using the inspector.
Edit: To update the GUI replace line 80 with:
GUI.Label (Rect (10, 30, 100, 200), "Clips left: " + clips * clipSize);
Thank you but I need it to subtract amount of bullets in clip from total bullets left
line 86 will decrement your clips
variable.
As far I see that could remain unchanged.
I figured it out, I added
var AmountReloaded = 0;
and
function Reload(){
AmountReloaded = (clipSize - bulletsInClip);
bulletsInClip = clipSize;
bulletsLeft = (bulletsLeft - AmountReloaded);
yield WaitForSeconds (1.25);
}
Your answer
Follow this Question
Related Questions
Unrealistic Fps Shooting? 1 Answer
OnMouseUp() not working like meant 1 Answer
How to get the distance between two objects in feet/meter? 1 Answer
2D Raycast in any direction 1 Answer
GUI label on raycast? 0 Answers