//Create DamagePopup public static DamagePopupScript Create(Vector3 position, int damageAmount, bool isCriticalHit) { Transform damagePopupTransform = Instantiate(InGameAssets.i.pfDamagePopup, position, Quaternion.identity); DamagePopupScript damagePopup = damagePopupTransform.GetComponent <DamagePopupScript>(); damagePopup.Setup(damageAmount, isCriticalHit); return(damagePopup); }
private void EnemyCharacterHandlerOnShoot(object sender, EnemyCharacterHandler.OnShootEventArgs e) { Vector3 quadPosition = e.GunEndPosition; Vector3 quadSize = new Vector3(0.5f, 1f); DmgPopupPos.Set(enemyDamagePopupPlace.position.x, enemyDamagePopupPlace.position.y, enemyDamagePopupPlace.position.z); //Player shot weapon if (Time.time > NextEnemyShootTime) { CreateWeaponTracer(e.GunEndPosition, e.ShootPosition); CreateShootFlash(e.GunEndPosition); ShellParticleSystemHandler.Instance.SpawnShell(quadPosition, new Vector3(1, 1)); NextEnemyShootTime = Time.time + FireRate; //If any enemy hit RaycastHit2D raycastHit = Physics2D.Raycast(e.GunEndPosition, (e.ShootPosition - e.GunEndPosition).normalized, Vector3.Distance(e.GunEndPosition, e.ShootPosition)); if (raycastHit.collider != null) { PlayerHealth playerHealth = raycastHit.collider.GetComponent <PlayerHealth>(); if (playerHealth != null) { //Hit enemy int DamageAmount = UnityEngine.Random.Range(10, 100); bool isCritical = UnityEngine.Random.Range(0, 100) < 30; if (isCritical) { DamageAmount *= 2; } //Deal Dmg playerHealth.TakeDamage(DamageAmount); DamagePopupScript.Create(DmgPopupPos, DamageAmount, isCritical); } } } }
public void PlayerCharacterHandlerOnShoot(object sender, PlayerCharacterHandler.OnShootEventArgs e) { UtilsClass.ShakeCamera(0.5f, 0.25f); Vector3 quadPosition = e.gunEndPosition; Vector3 quadSize = new Vector3(0.5f, 1f); DmgPopupPos.Set(playerDamagePopupPlace.position.x, playerDamagePopupPlace.position.y, playerDamagePopupPlace.position.z); CreateWeaponTracer(e.gunEndPosition, e.shootPosition); CreateShootFlash(e.gunEndPosition); ShellParticleSystemHandler.Instance.SpawnShell(quadPosition, new Vector3(1, 1)); RaycastHit2D raycastHit = Physics2D.Raycast(e.gunEndPosition, (e.shootPosition - e.gunEndPosition).normalized, Vector3.Distance(e.gunEndPosition, e.shootPosition)); if (raycastHit.collider != null) { EnemyHealth enemyHealth = raycastHit.collider.GetComponent <EnemyHealth>(); isFollowing = true; StartCoroutine(WaitAfterFollowing()); if (enemyHealth != null) { //Hit enemy int DamageAmount = UnityEngine.Random.Range(10, 100); bool isCritical = UnityEngine.Random.Range(0, 100) < 30; if (isCritical) { DamageAmount *= 2; } //Deal Dmg enemyHealth.TakeDamage(DamageAmount); DamagePopupScript.Create(DmgPopupPos, DamageAmount, isCritical); } } }