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); }
protected void ShowEffect() { //이펙트 호출 ExplosionEffect effect = ObjectManager.Instance.effectPool.GetItem(); if (effect != null) { effect.Initilaize(this.transform.position, effectName, 0.5f, effectsize); } }
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; } }
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); } } }
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); } } }
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); } }