private void SendMessageToNearObjects() { Collider2D[] colliders = Physics2D.OverlapCircleAll(transform.position, radius); foreach (Collider2D c in colliders) { if (IsHittable(c.tag)) { c.gameObject.SendMessage("OnExplosionHit"); } } ExplosionEffect effectInstance = Instantiate(explosionEffectPrefab, transform.position, Quaternion.identity, instantiatedObjects.transform).GetComponent <ExplosionEffect>(); effectInstance.radius = radius; effectInstance.Execute(); if (gameObject.CompareTag("ZombieEnemy")) { gameObject.GetComponent <EnemyController>().Dead(); } else { Destroy(gameObject); } }
void Start() { name = "Track"; vehicleAudioSource = vehicle.GetComponent <AudioSource>(); carController = vehicle.GetComponent <CarController>(); vehicleExplosionEffect = vehicle.GetComponent <ExplosionEffect>(); trackSettings = GetComponent <TrackSettings>(); InitEmissionMaterial(); InitTrackSegments(); InitBrandingSigns(); InitBackgroundEffects(); InitWeather(); InitVehicleStartBox(); InitLapEndBox(); InitTimeBoosts(); InitObstacles(); InitCarProps(); InitBackground(); InitWall(); InitExcludeMobile(); InitMeshCombiner(); }
public void Disable() { ExplosionEffect explosion = m_ExplosionFeedbackManager.getUsableExplosionEffect(); explosion.pop(transform.position); transform.gameObject.SetActive(false); }
private void ExplosionEgg() { int layerMask = MyUtils.GetLayerMaskByString("Enemy"); Collider2D[] colls = Physics2D.OverlapCircleAll(this.transform.position, explosionRadius, layerMask); if (colls == null) { return; } for (int i = 0; i < colls.Length; i++) { CharacterInfo characterInfo = colls[i].gameObject.GetComponent <CharacterInfo>(); if (characterInfo != null) { characterInfo.GetDamage(power); } } //이펙트 ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(this.transform.position, "bazooka", 0.5f, explosionRadius * 2f); } //사운드 SoundManager.Instance.PlaySoundEffect("explosion"); Destroy(this.gameObject); }
private void Start() { spawnPointManager = gameObject.GetComponent <SpawnPointManager>(); scoreManager = gameObject.GetComponent <ScoreManager>(); explodePosition = new Vector3(transform.position.x, transform.position.y + 3.5f, transform.position.z); explosion = gameObject.AddComponent <ExplosionEffect>(); }
void PropateExplotion(int x, int y, int limit, int xStep, int yStep) { Debug.Log("X: " + x + " Y: " + y); if (limit >= ExplotionRange) { return; } BaseTile tileToCheck = tile.GetNeigbourInDirection(x, y); if (tileToCheck.GetType() == typeof(Wall)) { return; } ExplosionEffect SFX = Instantiate(effect, tileToCheck.transform.position, Quaternion.identity); tileToCheck.AddObjectToTile(SFX); tileToCheck.GetComponent <IDamage>().TakeDamage(Damage); if (xStep == 0 && yStep == 0) { return; } limit++; PropateExplotion(x + xStep, y + yStep, limit, xStep, yStep); }
/// <summary> /// Detect collisions when rocket explode and apply damage to characters near the explosion /// </summary> /// <param name="body">Object which detect collision</param> private void OnBodyEnter(object body) { if (!collisionObject.Disabled) { // Look for characters and remove some health foreach (Node node in areaExplosion.GetOverlappingBodies()) { if (node is Character) { Character character = node as Character; character.Health -= DAMAGE; } } // Launch the explosion animation ExplosionEffect explosionEffect = GameResources.GetInstance().Get <ExplosionEffect>(); explosionEffect.SetGlobalPosition(this.GlobalPosition); explosionEffect.SetScale(Vector2.One * EXPLOSION_SIZE); explosionEffect.Damage = DAMAGE; this.GetTree().GetRoot().GetNode("Main").CallDeferred("add_child", explosionEffect); //this.GetTree().GetRoot().GetNode("Main").AddChild(explosionEffect); this.QueueFree(); } }
/// <summary> /// Explode the grenade when the timer is over /// </summary> /// <param name="source">Source of the event</param> /// <param name="e">Additional information about the event</param> private void OnTimeOver(System.Object source, ElapsedEventArgs e) { timer.Stop(); timer.Dispose(); // Look for characters which are hit foreach (Node node in areaExplosion.GetOverlappingBodies()) { if (node is Character) { Character character = node as Character; character.Health -= DAMAGE; } } // Execute explosion animation ExplosionEffect explosionEffect = GameResources.GetInstance().Get <ExplosionEffect>(); explosionEffect.SetGlobalPosition(this.GlobalPosition); explosionEffect.SetScale(Vector2.One * EXPLOSION_SIZE); explosionEffect.Damage = DAMAGE; this.GetTree().GetRoot().GetNode("Main").AddChild(explosionEffect); this.QueueFree(); }
public void StartExplosionEffect(ExplosionEffect e) { if (e != null && !explosionEffects.Contains(e)) { explosionEffects.Add(e); } }
public void Explode() { Explosion.Explode(this, explosionDamage, explosionForce, transform.position, explosionRadius); ExplosionEffect exp = Instantiate <ExplosionEffect>(explosionEffectPrefab); exp.transform.position = transform.position; exp.transform.localScale *= explosionRadius / exp.radius; }
public void explode() { if (exploded) { return; } CoalescingEffect.Stop(true); PepperField.Stop(); PepperField.Clear(); ExplosionEffect.Play(true); exploded = true; Astronaut plr = Astronaut.TheAstronaut; Am.am.oneshot(Am.am.M.FireBallEnemyExplosion); //if (Alive && !isStunned()) //{ Vector3 dif = (this.transform.position - plr.transform.position); float sc = 1f; float pre = 1f; /* * if (premature) * { * float f = ((Time.time - StateTime) / StateDuration); * pre = (.25f + (.75f * f)); * //ExplosionEffect.transform.localScale = (Vector3.one * pre); * } else * { * * ExplosionEffect.transform.localScale = (Vector3.one ); * } */ float radius = (4f * sc); //*pre float dist = (dif.magnitude / radius); if (dist < 1f) { //if ((Time.time - plr.lastDamageTakenTime) >= 1.5f) //{ Vector3 diff = (plr.transform.position - this.transform.position); HitsDone += 1f; float df = (1f - dist); //df = Mathf.Pow(df, 1f/(1f + (1f * Astronaut.AggressionLevelF))); if (plr.TakeDamage(80f * df, (diff.normalized * 30f) + new Vector3(0f, plr.JumpSpeed * 2f, 0f))) { HitsDone += 4f; } //} } //} }
protected void ShowEffect() { //이펙트 호출 ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(this.transform.position, effectName, 0.5f, effectsize); } }
public void OnCollisionStay2D(Collision2D collision) { Collider2D other = collision.collider; if (action == MonkeyKongActions.RUNNING) { /* If running, blow up everything it Monkey Kong's path. */ var scripts = other.GetComponents <MonoBehaviour>(); IExplodable[] interfaceScripts = ( from a in scripts where a.GetType().GetInterfaces().Any( k => k == typeof(IExplodable)) select(IExplodable) a).ToArray(); foreach (IExplodable explodable in interfaceScripts) { explodable.BlowUp(this, 20f); } if (other.tag == "Room Wall") { lastSpecialAttack = Time.time; Explosion.Explode(this, 20f, collsionForceModifier * rb.velocity.magnitude, transform.position, collsionRadiusModifier * rb.velocity.magnitude); ExplosionEffect exp = Instantiate <ExplosionEffect>(explosionEffectPrefab); exp.transform.position = transform.position; exp.transform.localScale *= collsionRadiusModifier * rb.velocity.magnitude / exp.radius; rb.velocity = Vector2.zero; dazedTime = collisionDazedDuration; action = MonkeyKongActions.DAZED; animator.SetTrigger("Dazed"); } } else { if (other.tag == "Player") { if (player.lawnPower) { TakeDamage(2); } else { PlayerController player = other.GetComponent <PlayerController>(); player.TakeDamage(this); } } } }
public override void ActivatePowerUp(string name, Transform origin) { base.ActivatePowerUp(name, origin); List <Collider> enemies = Physics.OverlapSphere(origin.position, radius).ToList(); for (int i = 0; i < enemies.Count; i++) { if (!enemies[i].GetComponent <Competitor>() || enemies[i].transform == origin) { enemies.Remove(enemies[i]); i--; } } explodingObject.transform.position = origin.position; ExplosionEffect effect = explodingObject.GetComponent <ExplosionEffect>(); if (effect == null) { effect = explodingObject.AddComponent <ExplosionEffect>(); } effect.StartExplosion(duration, Vector3.zero); if (enemies.Count == 0) { return; } else { foreach (Collider enemy in enemies) { var rb = enemy.GetComponent <Rigidbody>(); var competitor = enemy.GetComponent <Competitor>(); if (!competitor.untouchable) { if (enemy.tag == "Player") { rb.AddExplosionForce(playerPower, origin.position, radius, playerUpwardForce, ForceMode.Impulse); } else { competitor.navMeshOff = true; competitor.GetComponent <AIStateMachine>().enabled = false; rb.AddExplosionForce(power, origin.position, radius, upwardForce, ForceMode.Impulse); competitor.Blast(competitor.transform, 1.0f); } } } } }
private void OnTriggerEnter2D(Collider2D collision) { if (canCollision == false) { return; } if (bounceBulletType == BounceBulletType.BillardsBall) { SoundManager.Instance.PlaySoundEffect("cueGunBounce"); } else if (bounceBulletType == BounceBulletType.tenisBall) { SoundManager.Instance.PlaySoundEffect("Tenisd"); } ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(this.transform.position, "revolver", 0.5f, 1f); } bouncCount += 1; if (bouncCount >= bounceMax) { DestroyBullet(); return; } canCollision = false; StartCoroutine(CollisionCheckRoutine()); CharacterInfo chr = collision.gameObject.GetComponent <CharacterInfo>(); if (chr != null) { chr.GetDamage(damage); } int layerMask = MyUtils.GetLayerMaskExcludeName(bulletType.ToString()); RaycastHit2D rayHit = Physics2D.Raycast(this.transform.position, moveDir, 1f, layerMask); Vector2 reflectVector = Vector2.Reflect(moveDir, rayHit.normal); reflectVector.Normalize(); if (rb != null) { moveDir = reflectVector.normalized; } }
void Explosion() { List <Collider> enemies = Physics.OverlapSphere(this.gameObject.transform.position, PUE.DM_radius).ToList(); for (int i = 0; i < enemies.Count; i++) { if (!enemies[i].GetComponent <Competitor>() || enemies[i].transform == this.gameObject.transform) { enemies.Remove(enemies[i]); i--; } } explodingObject.transform.position = transform.position; ExplosionEffect effect = explodingObject.GetComponent <ExplosionEffect>(); if (effect == null) { effect = explodingObject.AddComponent <ExplosionEffect>(); } effect.StartExplosion(duration, Vector3.zero); if (enemies.Count == 0) { return; } else { foreach (Collider enemy in enemies) { var rb = enemy.GetComponent <Rigidbody>(); var competitor = enemy.GetComponent <Competitor>(); if (!competitor.untouchable) { if (enemy.tag == "Player") { rb.AddExplosionForce(PUE.DM_playerPower, transform.position, PUE.DM_radius, PUE.DM_playerUpwardForce, ForceMode.Impulse); Destroy(transform.parent.gameObject); } else { competitor.navMeshOff = true; competitor.GetComponent <AIStateMachine>().enabled = false; rb.AddExplosionForce(PUE.DM_power, transform.position, PUE.DM_radius, PUE.DM_upwardForce, ForceMode.Impulse); Destroy(transform.parent.gameObject); competitor.Blast(competitor.transform, duration); } } } } }
public void Slam() { Explosion.Explode(this, 20f, slamForce, transform.position, slamRadius); ExplosionEffect exp = Instantiate <ExplosionEffect>(explosionEffectPrefab); exp.transform.position = transform.position; exp.transform.localScale *= slamRadius / exp.radius; lastSpecialAttack = Time.time; rb.velocity = Vector2.zero; }
private void DoExplosion(float modifier, Vector3 contact_point, float magnitude, int contactType) { float exp_force = GetExplosionForce(modifier, magnitude); if (exp_force > 200) { SoundEffectManager.GetInstance().PlaySoundEffect(contact_point, exp_force, contactType); rb.AddExplosionForce(exp_force, contact_point, EXPLOSION_RADIUS); ExplosionEffect.GetInstance().MakeExplosionEffect(contact_point, exp_force); //Debug.Log("Did EXPLOSION with force " + exp_force.ToString() + "\n"); SendEventPlayerHit(exp_force); } //add particle effect }
private void OnTriggerEnter2D(Collider2D collision) { CharacterInfo chr = collision.gameObject.GetComponent <CharacterInfo>(); if (chr != null) { chr.GetDamage(damage); //이펙트 호출 ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(chr.transform.position, "revolver", 0.5f, 1f); } } }
void Start() { if (tg == "SWORD") { PAIN_MODIFIER = 0.75f; DAMAGE_MODIFIER = 2f; SWORD_MODIFIER = 1f; } if (tg == "SHELL") { PAIN_MODIFIER = 2f; DAMAGE_MODIFIER = 0.75f; SWORD_MODIFIER = 0f; } ee = ExplosionEffect.GetInstance(); }
public override void FireBullet(Vector3 firePos, Vector3 fireDirection) { if (canFire() == false) { return; } FireDelayOn(); PlayFireAnim(); useBullet(); //흔들리는 효과 CameraController.Instance.ShakeCamera(3f, 0.4f); int layerMask = MyUtils.GetLayerMaskByString("Enemy"); SoundManager.Instance.PlaySoundEffect("thunder"); Collider2D[] colls = Physics2D.OverlapCircleAll(firePos, explosionRadius, layerMask); if (colls == null) { return; } for (int i = 0; i < colls.Length; i++) { CharacterInfo characterInfo = colls[i].gameObject.GetComponent <CharacterInfo>(); if (characterInfo != null) { ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(characterInfo.transform.position + Vector3.up, "Thunder", 0.5f, 3f); } characterInfo.GetDamage(multiDamage); } } //이펙트 호출 ExplosionEffect effect2 = ObjectManager.Instance.effectPool.GetItem(); if (effect2 != null) { effect2.Initilaize(firePos + Vector3.down * 0.5f, "PowerGauntletEffect", 0.5f, 2f); } }
protected void FireHitScan(Vector3 firePos, Vector3 fireDirection, int damage, Color color = default(Color), bool setPush = false, float pushPower = 3f) { int layerMask = (1 << LayerMask.NameToLayer("Enemy") | (1 << LayerMask.NameToLayer("Tile")) | (1 << LayerMask.NameToLayer("ItemTable") | (1 << LayerMask.NameToLayer("EnemyTurret")))); Ray2D ray = new Ray2D(firePos, fireDirection); RaycastHit2D hit = Physics2D.Raycast(firePos, fireDirection, 100f, layerMask); if (hit == true) { CharacterInfo characterInfo = hit.transform.gameObject.GetComponent <CharacterInfo>(); if (characterInfo != null) { if (setPush == true) { characterInfo.SetPush(firePos, pushPower, 0); } characterInfo.GetDamage(damage); if (characterInfo.IsDead == true) { GoogleService.Instance.SetCharacterAchivement(CharacterType.Sniper); } } //라인 그려주기 DrawLiner line = ObjectManager.Instance.linePool.GetItem(); if (line != null) { line.Initialize(firePos, hit.point); } if (color != default(Color)) { line.SetLineColor(color); } //이펙트 //이펙트 호출 ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(hit.point, "revolver", 0.5f, 1f); } } }
private new void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.CompareTag("ItemTable") == true) { return; } int layerMask = MyUtils.GetLayerMaskByString("Enemy"); Collider2D[] colls = Physics2D.OverlapCircleAll(this.transform.position, 1.5f, layerMask); if (colls == null) { return; } for (int i = 0; i < colls.Length; i++) { CharacterInfo characterInfo = colls[i].gameObject.GetComponent <CharacterInfo>(); if (characterInfo != null) { characterInfo.GetDamage(damage); } } //이펙트 호출 ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(this.transform.position, "bazooka", 0.5f, 3f); } SoundManager.Instance.PlaySoundEffect("explosion"); //흔들리는 효과 CameraController.Instance.ShakeCamera(3f, 0.4f); //삭제 DestroyBullet(); }
private new void OnCollisionEnter2D(Collision2D collision) { if (collision.gameObject.CompareTag("ItemTable") == true) { return; } CharacterInfo chr = collision.gameObject.GetComponent <CharacterInfo>(); if (chr != null) { chr.GetDamage(damage); DestroyBullet(); ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(this.transform.position, "revolver", 0.5f, 1f); } } }
private BehaviourState DiveBombTarget() { //if the AI is moving towards it's target location if ((m_AIReference.transform.position - m_TargetLocation).magnitude >= MathFunc.LargeEpsilon) { m_AIReference.transform.position += MathFunc.MoveToward(m_AIReference.transform.position, m_TargetLocation, m_KamikazeSpeed); return(BehaviourState.Running); } //if it is close enough to the location that it can explode, then go for it else { Collider[] colliders = Physics.OverlapSphere(m_AIReference.transform.position, m_ExplosionRadius * 0.5f, m_AIReference.TargetLayerMask); foreach (Collider collider in colliders) { Player p = collider.GetComponent <Player>(); if (p != null) { Status[] statuses = { Status.Burn }; p.photonView.RPC("TakeDamage", PhotonTargets.All, m_Damage, statuses); p.ApplyForceOverNetwork((p.transform.position - m_AIReference.transform.position).normalized * m_ExplosionPushBack, ForceMode.Impulse); } } //instantiate the explosion over the network GameObject explosion = PhotonNetwork.Instantiate("ExplosionRenderer", m_AIReference.transform.position, m_AIReference.transform.rotation, 0); ExplosionEffect effect = explosion.GetComponent <ExplosionEffect>(); //set the required activation stuff over the network effect.photonView.RPC("ActivateExplosion", PhotonTargets.All, m_ExplosionRadius); //set the health value of the phoenix to be -1 because the kamikaze attack kills the AI m_AIReference.Health.HP = -1; //reset the cooldown timer here m_Timer = 0.0f; return(BehaviourState.Succeed); } }
private void OnCollisionEnter(Collision collision) { if (!m_CanCollide) { return; } SoundManager.GetInstance().photonView.RPC("PlaySFXNetworked", PhotonTargets.All, "GrenadeExplosion", transform.position); //instantiate explosion render GameObject explosionRenderer = (GameObject)(Instantiate(Resources.Load("Effects/ExplosionRenderer"), gameObject.transform.position, Quaternion.identity)); ExplosionEffect explosionEffect = explosionRenderer.GetComponent <ExplosionEffect>(); explosionEffect.ActivateExplosion(Radius); m_CanCollide = false; gameObject.SetActive(false); //return object to pool Collider[] colliders; //stores all colliders that were hit m_EnemiesHit.Clear(); colliders = Physics.OverlapSphere(gameObject.transform.position, Radius, m_LayerMask); //if we collided with any objects of our specific target layer mask then they take damage for (int i = 0; i < colliders.Length; i++) { AITakeDamageInterface enemy = colliders[i].transform.root.GetComponent <AITakeDamageInterface>(); if (enemy != null && !m_EnemiesHit.Contains(enemy)) //if the collided object has a health component { m_EnemiesHit.Add(enemy); if (PhotonNetwork.isMasterClient) { enemy.TakeDamage(m_ProjectileOwner, m_Damage, null, AIUtilits.GetCritMultiplier(colliders[i].gameObject)); } } } }
void Awake() { instance = this; }
public override bool getPowerup(BCBlockGameState gstate,Paddle onPaddle, GamePowerUp gpower) { if(onPaddle==null) return false; //don't accept it. //reject it with great prejudice. //move the location temporarily. PointF oldposition = gpower.Location; SizeF oldsize = gpower.Size; gpower.Location = PointF.Empty; //draw to a temporary bitmap. Bitmap drawtothis = new Bitmap(16, 16); Graphics useg = Graphics.FromImage(drawtothis); useg.Clear(Color.Transparent); gpower.Draw(useg); //reset position. gpower.Location = oldposition; gpower.Size = oldsize; //get average. var averagedpixel = Color.FromArgb((int)((from p in drawtothis.getPixels() select p.ToArgb()).Average())); ExplosionEffect ee = new ExplosionEffect(gpower.Location, 72); ee.ExplosionColor = averagedpixel; ee.DamageBlocks = false; ee.DamagePaddle = false; gstate.Defer(() => gstate.GameObjects.AddLast(ee)); //move gpower to above the paddle, and invert the Y speed. gpower.Location = new PointF(gpower.Location.X, onPaddle.BlockRectangle.Top - gpower.getRectangle().Height - 1); gpower.Velocity = new PointF(gpower.Velocity.X, -Math.Abs(gpower.Velocity.Y)*1.1f); return true; }
public IEnumerator SkillRoutine() { while (true) { if (Input.GetKeyDown(KeyCode.Mouse0)) { if (CanFire() == true) { #if UNITY_EDITOR Vector2 touchPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); RaycastHit2D rayHit = Physics2D.Raycast(touchPos, Vector2.zero, 0.1f, snipingLayerMask); if (rayHit.collider != null) { CharacterInfo monster = rayHit.collider.gameObject.GetComponent <CharacterInfo>(); if (monster != null) { if (monster.IsDead == false) { UseBullet(); monster.GetDamage(snipingPower); } } //이펙트 호출 ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(rayHit.transform.position, "SniperAim", 0.5f, 2f); effect.SetAlpha(150f); } SoundManager.Instance.PlaySoundEffect("sniper1"); } // // #else Touch[] touches = Input.touches; if (touches != null) { for (int i = 0; i < touches.Length; i++) { Vector2 touchPos = Camera.main.ScreenToWorldPoint(touches[i].position); RaycastHit2D rayHit = Physics2D.Raycast(touchPos, Vector2.zero, 0.1f, snipingLayerMask); if (rayHit.collider != null) { CharacterInfo monster = rayHit.collider.gameObject.GetComponent <CharacterInfo>(); if (monster != null) { if (monster.IsDead == false) { UseBullet(); monster.GetDamage(snipingPower); //사운드 SoundManager.Instance.PlaySoundEffect("sniper1"); //이펙트 호출 ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(rayHit.transform.position, "SniperAim", 0.5f, 2f); effect.SetAlpha(150f); } break; } } } } } #endif } } yield return(null); } }