using System.Collections; using System.Collections.Generic; using UnityEngine; public class BreakAbleObstacle : Obstacle { [Header("要破坏可破坏障碍物,需要多大的水平速度")] public float breakSpeedThreshold = 1f; [Header("爆破碎片飞出时有多大力")] public float breakForce = 1f; private Explodable explodable; private ExplosionForce explosionForce; private AudioSource audioSource; protected override void FindSth() { base.FindSth(); explodable = transform.Find("Obstacle").GetComponent(); explosionForce = transform.Find("Force").GetComponent(); audioSource = GetComponent(); } void OnTriggerEnter2D(Collider2D other) { if(other.tag == "HorseHead") { if(other.transform.parent.tag != "Horse") Debug.LogWarning("用于检查可破碎障碍物的触发器捕获到了马头,但是通过马头没有找到马,很可能是马的树状结构或者tag的赋予上出了问题"); CheckHorseSpeed(other.transform.parent); } } void CheckHorseSpeed(Transform horse) { if(horse.GetComponent().velocity.x > breakSpeedThreshold) BreakObstacle(horse); } /// /// 破碎障碍物 /// void BreakObstacle(Transform horse) { explodable.explode(); float force = horse.GetComponent().footInputCharge * breakForce; Debug.Log("Force:" + force); explosionForce.force = force; explosionForce.doExplosion(explosionForce.transform.position); GetComponent().enabled = false; horse.GetComponent().velocity = Vector2.zero; // audioSource.Play(); // transform.Find("破碎灰尘").GetComponent().Play(); //触发红黑闪特效 GameObject flash = Camera.main.transform.Find("红黑闪").gameObject; flash.SetActive(true); ActionController.Instance.DelayToCall( () => { flash.SetActive(false); },0.3f ); } }