Quantcast
Viewing all articles
Browse latest Browse all 146

realistic reload system?

Hello! how do i can to make a realistic reload system from my script? (C#). Thanks! using UnityEngine; using System.Collections; public class Weapon : MonoBehaviour { public float Damage = 0f; public float Range = 0f; public float ImpactForce = 0f; public float FireRate = 0f; public int MaxAmmo = 0; public int TotalAmmo = 0; public int CurrentAmmo; public float ReloadTime = 0; private bool IsReloading = false; public Camera FPScam; public ParticleEmitter MuzzleFlash; public GameObject HitEffect; private float NextTimeToFire = 0f; public AudioClip ShootSound; void Start() { CurrentAmmo = MaxAmmo; } void OnEnable() { IsReloading = false; } void Update () { if(IsReloading) return; if(CurrentAmmo <= 0) { StartCoroutine(Reload()); return; } if(Input.GetButton("Fire1") && Time.time >= NextTimeToFire) { NextTimeToFire = Time.time + 1f/FireRate; Shoot(); } } IEnumerator Reload() { IsReloading = true; Debug.Log("Reloading..."); yield return new WaitForSeconds(ReloadTime - 0.25f); TotalAmmo -= MaxAmmo; CurrentAmmo = MaxAmmo; IsReloading = false; } void Shoot() { MuzzleFlash.Emit(); audio.Play(); audio.clip = ShootSound; CurrentAmmo--; RaycastHit hit; if (Physics.Raycast(FPScam.transform.position, FPScam.transform.forward, out hit, Range)) { Debug.Log(hit.transform.name); Target target = hit.transform.GetComponent(); if(target != null) { target.TakeDamage(Damage); } if(hit.rigidbody != null) { hit.rigidbody.AddForce(-hit.normal * ImpactForce); } Instantiate(HitEffect, hit.point, Quaternion.LookRotation(hit.normal)); } } }

Viewing all articles
Browse latest Browse all 146

Trending Articles