private void Update() { _countdown -= Time.deltaTime; if (!(_countdown <= 0f)) { return; } OnExplode?.Invoke(); Destroy(gameObject); }
public void Explode() { var hitted = new HashSet <Destructable>(); var pos = transform.position; foreach (var damage in damages) { var colliders = Physics.OverlapSphere(pos, damage.radius); foreach (var collider in colliders) { var dest = collider.GetComponent <Destructable>(); if (dest != null && !hitted.Contains(dest)) { hitted.Add(dest); dest.Hit(damage.hitPower); } } } gameObject.SetActive(false); OnExplode?.Invoke(); }
public override void Update(Microsoft.Xna.Framework.GameTime gameTime) { base.Update(gameTime); if (counter > 0) { counter -= gameTime.ElapsedGameTime.Milliseconds; ledSegment[0].SetValue((uint)((counter % 1000) / 100)); ledSegment[1].SetValue((uint)((counter % 10000) / 1000)); if (counter < 10000) { ledSegment[2].Visible = false; } else { ledSegment[2].SetValue((uint)((counter % 100000) / 10000)); } if (counter <= 0) { OnExplode.Invoke(this); } } }
private void Explode() { OnExplode?.Invoke(); Destroy(gameObject); }
protected void explode() { explosion.Explode(); OnExplode?.Invoke(this); }
private IEnumerator explodey(explosionType explosiontype, Vector3 position, float power, float radius) { if (StatMaster.isClient) { yield break; } if (isExplodey) { yield break; } else { fireEffect = getExplodeEffectObject(explosiontype); if (ExplosionType == explosionType.Big) { fireEffect.transform.FindChild("Debris").localRotation = Quaternion.AngleAxis(UnityEngine.Random.Range(0f, 360f), Vector3.up); } fireEffect.transform.position = position; if (!StatMaster.isClient) { var message = ExplodyMessage.CreateMessage((int)explosiontype, position); ModNetworking.SendToAll(message); } } yield return(new WaitForFixedUpdate()); isExplodey = true; fireEffect.SetActive(true); OnExplode?.Invoke(); //定义爆炸位置为炸弹位置 Vector3 explosionPos = position; //这个方法用来返回球型半径之内(包括半径)的所有碰撞体collider[] Collider[] colliders = Physics.OverlapSphere(explosionPos, radius); //遍历返回的碰撞体,如果是刚体,则给刚体添加力 foreach (Collider hit in colliders) { if (hit.attachedRigidbody != null) { float force = UnityEngine.Random.Range(30000f, 50000f) * power * (Vector3.Distance(hit.transform.position, explosionPos) / (radius + 0.25f)); hit.attachedRigidbody.AddExplosionForce(force, explosionPos, radius); hit.attachedRigidbody.AddTorque(force * Vector3.Cross((hit.transform.position - explosionPos), Vector3.up)); reduceBlockHealth(hit.attachedRigidbody.gameObject); } } OnExploded?.Invoke(colliders); yield return(new WaitForSeconds(3f)); fireEffect.SetActive(false); OnExplodeFinal?.Invoke(); //------------------------------------------------------------- void reduceBlockHealth(GameObject gameObject) { var bhb = gameObject.GetComponent <BlockHealthBar>(); if (bhb != null) { bhb.DamageBlock(1); } } //--------------------------------------------------------------- }
public void Explode() { //Create Explosion OnExplode?.Invoke(); Destroy(gameObject); }
private void Explode() { //effect.GetComponent<Light>().enabled = false; effect.GetComponentInChildren <ParticleSystem>().Stop(); OnExplode?.Invoke(); }