// Update is called once per frame void OnTriggerEnter2D(Collider2D other) { Enemy enemy = other.GetComponent <Enemy>(); Rigidbody2D rigid = other.GetComponent <Rigidbody2D>(); EnemyAttack EA = other.GetComponent <EnemyAttack>(); AIBrain AI = other.GetComponent <AIBrain>(); if (fromPlayer) { if (other.tag != "BulletFromPlayer" && other.tag != "Player" && other.tag != "Coin") { if (enemy != null) { enemy.TakeDamage(damage); GameObject.FindObjectOfType <money>().TotalDamageDealt += damage; } if (EA != null) { EA.GotKnocked(10f, 2f); objectPooler.Instance.SpawnFromPool("EnemyBlood", transform.position, Quaternion.identity * Quaternion.Euler(0f, 90f, 0)).GetComponent <ParticleSystem>().Play(); } if (AI != null) { AI.GotHitBy(Name, damage); } this.gameObject.SetActive(false); } if (other.tag != "Bullet") { //objectPooler.Instance.SpawnFromPool("Impact Effect", transform.position, Quaternion.identity * Quaternion.LookRotation(forceVector) * Quaternion.Euler(180f, 0f, 0)).GetComponent<ParticleSystem>().Play(); } } else { if (other.tag != "Bullet" && other.tag != "Enemy" && other.tag != "Coin") { if (enemy != null) { enemy.TakeDamage(damage); } if (rigid != null) { rigid.AddForce(transform.GetComponent <Rigidbody2D>().velocity *force, ForceMode2D.Force); } objectPooler.Instance.SpawnFromPool("Impact Effect", transform.position, Quaternion.identity * Quaternion.LookRotation(forceVector) * Quaternion.Euler(180f, 0f, 0)).GetComponent <ParticleSystem>().Play(); if (other.CompareTag("Player")) { objectPooler.Instance.SpawnFromPool("EnemyBlood", transform.position, Quaternion.identity * Quaternion.Euler(0, 90f, 0)).GetComponent <ParticleSystem>().Play(); } this.gameObject.SetActive(false); } } }
IEnumerator RaycastShoot() { for (int i = 0; i < soVienBanRa1Luc; i++) { if (lineRenderer.Length > 0) { lineRenderer[i].SetPosition(0, firepos.position); } if (i > 1) { CalculateSpreadShotgun(); } else { CalculateSpread(); } RaycastHit2D hitInfo = Physics2D.Raycast(firepos.position, randomRotation * firepos.up, lengthRayCast); RaycastHit2D fromPlayertoFirePos = Physics2D.Raycast(transform.position, firepos.position - transform.position, Vector2.Distance(firepos.position, transform.position), NotPlayer); if (fromPlayertoFirePos && fromPlayertoFirePos.transform.tag != "Player") { Enemy enemyClose = fromPlayertoFirePos.transform.GetComponent <Enemy>(); if (enemyClose != null) { enemyClose.TakeDamage(damage); gameObject.GetComponentInParent <money>().TotalDamageDealt += damage; objectPooler.Instance.SpawnFromPool("Impact Effect", fromPlayertoFirePos.point, Quaternion.LookRotation(fromPlayertoFirePos.normal)).GetComponent <ParticleSystem>().Play(); if (fromPlayertoFirePos.transform.gameObject.GetComponent <EnemyAttack>() != null) { fromPlayertoFirePos.transform.gameObject.GetComponent <EnemyAttack>().GotKnocked(kBForce, dazeTime); objectPooler.Instance.SpawnFromPool("EnemyBlood", fromPlayertoFirePos.point, Quaternion.LookRotation(fromPlayertoFirePos.normal)).GetComponent <ParticleSystem>().Play(); } } AIBrain AI = hitInfo.transform.GetComponent <AIBrain>(); if (AI != null) { AI.GotHitBy(sound + Name, damage); } } if (hitInfo) { Enemy enemy = hitInfo.transform.GetComponent <Enemy>(); if (enemy != null) { enemy.TakeDamage(damage); gameObject.GetComponentInParent <money>().TotalDamageDealt += damage; objectPooler.Instance.SpawnFromPool("Impact Effect", hitInfo.point, Quaternion.LookRotation(hitInfo.normal)).GetComponent <ParticleSystem>().Play(); if (hitInfo.transform.gameObject.GetComponent <EnemyAttack>() != null) { hitInfo.transform.gameObject.GetComponent <EnemyAttack>().GotKnocked(kBForce, dazeTime); objectPooler.Instance.SpawnFromPool("EnemyBlood", hitInfo.point, Quaternion.LookRotation(hitInfo.normal)).GetComponent <ParticleSystem>().Play(); } } AIBrain AI = hitInfo.transform.GetComponent <AIBrain>(); if (AI != null) { AI.GotHitBy(sound + Name, damage); if (IsC) { randomDestinationAI RDAI = hitInfo.transform.GetComponent <randomDestinationAI>(); if (RDAI != null) { RDAI.stop = true; } } if (IsG) { randomDestinationAI RDAI = hitInfo.transform.GetComponent <randomDestinationAI>(); if (RDAI != null) { RDAI.quarantine = true; } } } if (lineRenderer.Length > 0) { lineRenderer[i].SetPosition(1, hitInfo.point); } } else { if (lineRenderer.Length > 0) { lineRenderer[i].SetPosition(1, new Vector2(lengthRayCast * Mathf.Cos(Mathf.Deg2Rad * (firepos.eulerAngles.z + currentSpreadZ + 90f)) + firepos.position.x, lengthRayCast * Mathf.Sin(Mathf.Deg2Rad * (firepos.eulerAngles.z + currentSpreadZ + 90f)) + firepos.position.y)); } } } if (lineRenderer.Length > 0) { for (int i = 0; i < lineRenderer.Length; i++) { lineRenderer[i].enabled = true; } } if (MuzzleFlash != null) { MuzzleFlash.SetActive(true); } yield return(new WaitForSeconds(0.02f)); if (lineRenderer.Length > 0) { for (int i = 0; i < lineRenderer.Length; i++) { lineRenderer[i].enabled = false; } } if (MuzzleFlash != null) { MuzzleFlash.SetActive(false); } }