- Home /
How can the ammo go to 31 at the start of a game?,How can I make The current ammo return to 31 at the start of a game?
How can I make it that the ammo goes toe 31 at the start of the game?
using UnityEngine;
public class Gun : MonoBehaviour {
[Header("References")]
[SerializeField] private GunData gunData;
[SerializeField] private Transform cam;
[SerializeField] private Transform R_Bullet;
public GameObject Bullet_Emitter;
public GameObject Bullet;
public float Bullet_Forward_Force;
float timeSinceLastShot;
private void Start() {
PlayerShoot.shootInput += Shoot;
PlayerShoot.reloadInput += StartReload;
}
private void OnDisable() => gunData.reloading = false;
public void StartReload() {
if (!gunData.reloading && this.gameObject.activeSelf)
StartCoroutine(Reload());
}
private IEnumerator Reload() {
gunData.reloading = true;
yield return new WaitForSeconds(gunData.reloadTime);
gunData.currentAmmo = gunData.magSize;
gunData.reloading = false;
}
private bool CanShoot() => !gunData.reloading && timeSinceLastShot > 1f / (gunData.fireRate / 60f);
private void Shoot() {
if (gunData.currentAmmo > 0) {
if (CanShoot()) {
if (Physics.Raycast(cam.position, cam.forward, out RaycastHit hitInfo, gunData.maxDistance)){
IDamageable damageable = hitInfo.transform.GetComponent<IDamageable>();
damageable?.TakeDamage(gunData.damage);
GameObject Temporary_Bullet_Handler;
Temporary_Bullet_Handler = Instantiate(Bullet,Bullet_Emitter.transform.position,Bullet_Emitter.transform.rotation) as GameObject;
Temporary_Bullet_Handler.transform.Rotate(Vector3.left * 180);
Rigidbody Temporary_RigidBody;
Temporary_RigidBody = Temporary_Bullet_Handler.GetComponent<Rigidbody>();
Temporary_RigidBody.AddForce(transform.forward * Bullet_Forward_Force);
Destroy(Temporary_Bullet_Handler, 10.0f);
}
gunData.currentAmmo--;
timeSinceLastShot = 0;
OnGunShot();
}
}
}
private void Update() {
timeSinceLastShot += Time.deltaTime;
Debug.DrawRay(cam.position, cam.forward * gunData.maxDistance);
}
private void OnGunShot() { }
}
Comment
Answer by Caeser_21 · Apr 13 at 12:29 PM
Can't you just assign it in Start()
, like :
using UnityEngine;
public class Gun : MonoBehaviour {
[Header("References")]
[SerializeField] private GunData gunData;
[SerializeField] private Transform cam;
[SerializeField] private Transform R_Bullet;
public GameObject Bullet_Emitter;
public GameObject Bullet;
public float Bullet_Forward_Force;
float timeSinceLastShot;
private void Start() {
PlayerShoot.shootInput += Shoot;
PlayerShoot.reloadInput += StartReload;
gunData.currentAmmo = 31; //This is the line you need to add
}
private void OnDisable() => gunData.reloading = false;
public void StartReload() {
if (!gunData.reloading && this.gameObject.activeSelf)
StartCoroutine(Reload());
}
private IEnumerator Reload() {
gunData.reloading = true;
yield return new WaitForSeconds(gunData.reloadTime);
gunData.currentAmmo = gunData.magSize;
gunData.reloading = false;
}
private bool CanShoot() => !gunData.reloading && timeSinceLastShot > 1f / (gunData.fireRate / 60f);
private void Shoot() {
if (gunData.currentAmmo > 0) {
if (CanShoot()) {
if (Physics.Raycast(cam.position, cam.forward, out RaycastHit hitInfo, gunData.maxDistance)){
IDamageable damageable = hitInfo.transform.GetComponent<IDamageable>();
damageable?.TakeDamage(gunData.damage);
GameObject Temporary_Bullet_Handler;
Temporary_Bullet_Handler = Instantiate(Bullet,Bullet_Emitter.transform.position,Bullet_Emitter.transform.rotation) as GameObject;
Temporary_Bullet_Handler.transform.Rotate(Vector3.left * 180);
Rigidbody Temporary_RigidBody;
Temporary_RigidBody = Temporary_Bullet_Handler.GetComponent<Rigidbody>();
Temporary_RigidBody.AddForce(transform.forward * Bullet_Forward_Force);
Destroy(Temporary_Bullet_Handler, 10.0f);
}
gunData.currentAmmo--;
timeSinceLastShot = 0;
OnGunShot();
}
}
}
private void Update() {
timeSinceLastShot += Time.deltaTime;
Debug.DrawRay(cam.position, cam.forward * gunData.maxDistance);
}
private void OnGunShot() { }
}
Your answer
Follow this Question
Related Questions
reload gun with bullets 2 Answers
Gun and hand animation tutorial! 2 Answers
Raycast gun 2 Answers
How can I make robot fire a machine gun? 1 Answer
Shooting. Bullet floats and sprays 1 Answer