private IEnumerator CheckReloadAmmoAnimationEnd() { while (true) { yield return(null); GunStateInfo = GunAnimator.GetCurrentAnimatorStateInfo(1); if (GunStateInfo.IsTag("ReloadAmmo")) { if (GunStateInfo.normalizedTime >= 0.7f) { int tem_NeedAmmoCount = AmmoInMag - CurrentAmmo; int tem_RemainingCount = CurrentMaxAmmoCarride - tem_NeedAmmoCount; if (tem_RemainingCount <= 0) { CurrentAmmo = CurrentMaxAmmoCarride + CurrentAmmo; } else { CurrentAmmo = AmmoInMag; } CurrentMaxAmmoCarride = tem_RemainingCount <= 0 ? 0 : tem_RemainingCount; yield break; } } } }
protected override void Reload() { GunAnimator.SetLayerWeight(2, 1); GunAnimator.SetTrigger(CurrentAmmo > 0 ? "ReloadLeft" : "ReloadOutOf"); FirearmsReloadAudioSource.clip = CurrentAmmo > 0 ? FirearmsAudioData.ReloadLeft : FirearmsAudioData.ReloadOutOf; FirearmsReloadAudioSource.Play(); if (reloadAmmoCheckerCoroutine == null) { reloadAmmoCheckerCoroutine = CheckReloadAmmoAnimationEnd(); StartCoroutine(reloadAmmoCheckerCoroutine); } else { StopCoroutine(reloadAmmoCheckerCoroutine); reloadAmmoCheckerCoroutine = null; reloadAmmoCheckerCoroutine = CheckReloadAmmoAnimationEnd(); StartCoroutine(reloadAmmoCheckerCoroutine); } }
protected override void Shooting() { if (CurrentAmmo <= 0) { return; } if (!IsAllowShooting()) { return; } MuzzleParticle.Play(); CurrentAmmo -= 1; GunAnimator.Play("Fire", IsAiming ? 1 : 0, 0); FirearmsShootingAudioSource.clip = FirearmsAudioData.ShootingAudio; FirearmsShootingAudioSource.Play(); CreateBullet(); CasingParticle.Play(); if (mouseLook) { mouseLook.FiringForTest(); } LastFireTime = Time.time; }
public float recoil; // assigned in editor void Start() { gunAnimator = GetComponent <GunAnimator> (); fireSound = GetComponent <AudioSource> (); bulletNum = bulletCapacity; parent = gameObject.transform.parent.gameObject.GetComponent <Camera> (); hitSystem = GameObject.Find("Game").GetComponent <Hit> (); }
protected override void Shooting() { if (CurrentAmmo <= 0) { return; } if (!IsAllowShooting()) { return; } MuzzleParticle.Play(); CurrentAmmo -= 1; GunAnimator.Play("Fire", 0, 0); CasingParticle.Play(); LastFireTime = Time.time; }
protected override void Shooting() { if (CurrentAmmo <= 0) { return; } if (!IsAllowShooting()) { return; } MuzzleParticle.Play(); CurrentAmmo -= 1; GunAnimator.Play(stateName: "Fire", layer: 0, normalizedTime: 0); CreateBullet(); CasingParticle.Play(); LastFireTime = Time.time; }
void Update() { if (uziAnimator != null) { if (state == PlayerState.aiming) { uziAnimator.isAiming(true); } else { uziAnimator.isAiming(false); } } else { uziAnimator = Uzi.GetComponent <GunAnimator>(); } }
protected override void Reload() { GunAnimator.SetLayerWeight(1, 1); GunAnimator.SetTrigger(CurrentAmmo > 0 ? "ReloadLeft" : "ReloadOutOf"); //通过赋值协程给变量来实现反复执行 if (checkReloadAmmoAnimationEnd_Coroutine == null) { checkReloadAmmoAnimationEnd_Coroutine = CheckReloadAmmoAnimationEnd(); StartCoroutine(checkReloadAmmoAnimationEnd_Coroutine); } else { StopCoroutine(checkReloadAmmoAnimationEnd_Coroutine); checkReloadAmmoAnimationEnd_Coroutine = null; checkReloadAmmoAnimationEnd_Coroutine = CheckReloadAmmoAnimationEnd(); StartCoroutine(checkReloadAmmoAnimationEnd_Coroutine); } }
protected override void Reload() { //GunAnimator.SetLayerWeight(1, 1); GunAnimator.SetTrigger(CurrentAmmo > 0 ? "ReloadLeft" : "ReloadOutOf"); if (reloadAmmoCheckerCoroutine == null) { reloadAmmoCheckerCoroutine = CheckReloadAmmoAnimationEnd(); StartCoroutine(reloadAmmoCheckerCoroutine); } else { StopCoroutine(reloadAmmoCheckerCoroutine); reloadAmmoCheckerCoroutine = null; reloadAmmoCheckerCoroutine = CheckReloadAmmoAnimationEnd(); StartCoroutine(reloadAmmoCheckerCoroutine); } }
protected override void Reload() { //CurrentAmmo = AmmoInMag; //CurrentMaxAmmoCarried -= AmmoInMag; GunAnimator.SetLayerWeight(2, 1);//改变动画layer权重 GunAnimator.SetTrigger(CurrentAmmo > 0 ? "ReloadLeft" : "ReloadOutOf"); //StartCoroutine(CheckReloadAnimationEnd()); FirearmsReloadAudioSource.clip = CurrentAmmo > 0?firearmsAudioData.ReloadLeft:firearmsAudioData.ReloadOutOf; FirearmsReloadAudioSource.Play(); if (reloadAmmoCheckerCoroutine == null) { reloadAmmoCheckerCoroutine = CheckReloadAnimationEnd(); StartCoroutine(reloadAmmoCheckerCoroutine); } else { StopCoroutine(reloadAmmoCheckerCoroutine); reloadAmmoCheckerCoroutine = null; reloadAmmoCheckerCoroutine = CheckReloadAnimationEnd(); StartCoroutine(reloadAmmoCheckerCoroutine); } }
void Start() { state = PlayerState.notAiming; uziAnimator = Uzi.GetComponent <GunAnimator>(); }