- Home /
Reload help
So i'm not the most experienced coder, but i try. I recently started a zombie FPS, i've got all the A.I. worked out and everything, but my one issue is I can shoot while reloading. I dont know how to add delay and i was wondering if anyone could tell me how/where to put in my script. Here it is:
pragma strict
var Range : float = 1000;
var Force : float = 1000;
var hitMark : GameObject;
var texta : GUITexture;
var four : Texture;
var three : Texture;
var two : Texture;
var one : Texture;
var zero : Texture;
var five : Texture;
var bullets : int = 5;
function Start () {
}
function Update () {
}
if(Input.GetKeyDown(KeyCode.R)){
if(bullets == 5){ texta.guiTexture.texture = five; }
else if(bullets == 0){ GameObject.Find("Gun").animation.Play("reload"); bullets = 5; }
else if(bullets == 4){ texta.guiTexture.texture = four; }
else if(bullets == 3){ texta.guiTexture.texture = three; }
else if(bullets == 2){ texta.guiTexture.texture = two; }
else if(bullets == 1){ texta.guiTexture.texture = one; }
var hit : RaycastHit;
var direction : Vector3 = transform.TransformDirection(Vector3.forward);
Debug.DrawRay(transform.position , direction * Range , Color.blue);
if(Input.GetMouseButtonDown(0)){
bullets--;
if(Physics.Raycast(transform.position , direction , hit, Range)){
var hitRotation = Quaternion.FromToRotation(Vector3.up, hit.normal);
if(hit.collider.gameObject.tag == "zombie"){
//hit.rigidbody.AddForceAtPosition( direction * 100 , hit.point);
//hit.collider.gameObject.animation.Play("die");
Instantiate(hitMark);
hit.collider.gameObject.SendMessage("ApplyDamage", 45);
}
}
}
}
Helloooooooo OP, are you still there? Someone needs to tick an answer to close the question. And you said it worked... :(
Answer by Shrandis · Oct 20, 2012 at 05:58 AM
At the line you check for user input:
if(Input.GetMouseButtonDown(0))
check if there are bullets in the mag
if(bullets > 0 && Input.GetMouseButtonDown(0))
However, I noticed you set the bullets to 5 the moment you start playing your reload animation. So, you either set bullets to 5 after the animation ends (you can use a coroutine or you can detect when the animation ends by using Animation Events. Check AddAnimation in script documentation for more info) or you can just check if the reload animation is playing:
if (animation.IsPlaying("Reload") && Input.GetMouseButtonDown(0))
@Skippy, you should mark this as the answer if it worked for you. If you're unsure of how to do so, it's the little checkmark under the thumbs up and thumbs down symbols to the left of the answer. It will help others who may have the same problem in the future.
Your answer
Follow this Question
Related Questions
Multiple Cars not working 1 Answer
How do I put a delay on a gunshot? 2 Answers
Gun reload and clip size 0 Answers
Switch Weapon Script Not taking effect HELP!! 2 Answers
Get a gun off a wall 1 Answer