using System.Collections; using System.Collections.Generic; using UnityEngine; using UnityEngine.UI; //盾牌,可以抵挡一次敌人的攻击,会消耗一次层数 //普通的敌人会停在原地,并准备下一次攻击(有一定的硬直时间) public class LightShield : MonoBehaviour { //最大层数 public int maxLayer_; //当前层数 public int remainLayer_; //层级对应盾牌对象 public GameObject[] LayerObjs_; //获取玩家控制类 private PlayerControl playerControl_; public Image shieldRecoverImg; public bool isRecovering; public ParticleSystem breakEffect; //持盾状态下盾牌被攻击 public void shieldHit() { if (remainLayer_ > 1) { remainLayer_ -= 1; LayerObjs_[remainLayer_].SetActive(false); } else { remainLayer_ -= 1; LayerObjs_[remainLayer_].SetActive(false); gameObject.GetComponent().enabled = false; breakEffect.Play(); } } void Start() { playerControl_ = GameObject.FindGameObjectWithTag("Player").GetComponent(); isRecovering = false; } //玩家在盾牌受到损伤后,会渐渐恢复 void Update() { if (remainLayer_ < maxLayer_ && !isRecovering) { isRecovering = true; playerControl_.startRecoverShield(); } shieldRecoverImg.fillAmount = playerControl_.shieldRecover / 30f; if (playerControl_.shieldRecover == 30) { LayerObjs_[remainLayer_].SetActive(true); remainLayer_ += 1; if (!gameObject.GetComponent().enabled) { gameObject.GetComponent().enabled = true; } playerControl_.shieldRecover = 0; shieldRecoverImg.fillAmount = 0; playerControl_.stopRecoverShield(); isRecovering = false; breakEffect.Play(); } } }