public void Damage(IEnemyTargetable attacker) { Vector3 bloodDir = (GetPosition() - attacker.GetPosition()).normalized; Blood_Handler.SpawnBlood(GetPosition(), bloodDir); int damageAmount = 30; DamagePopup.Create(GetPosition(), damageAmount, false); healthSystem.Damage(damageAmount); if (IsDead()) { FlyingBody.Create(GameAssets.i.pfEnemyFlyingBody, GetPosition(), bloodDir); Destroy(gameObject); } else { // Knockback transform.position += bloodDir * 5f; if (hitUnitAnim != null) { state = State.Busy; characterBase.PlayHitAnimation(bloodDir * (Vector2.one * -1f), SetStateNormal); } } }
public static void Create(Transform prefab, Vector3 spawnPosition, Vector3 flyDirection) { Transform flyingBodyTransform = Instantiate(prefab, spawnPosition, Quaternion.identity); FlyingBody flyingBody = flyingBodyTransform.gameObject.AddComponent <FlyingBody>(); flyingBody.Setup(flyDirection); }
private void EnemyMain_OnDamaged(object sender, EnemyMain.OnDamagedEventArgs e) { Vector3 bloodDir = (GetPosition() - e.attacker.GetPosition()).normalized; BloodParticleSystemHandler.Instance.SpawnBlood(5, GetPosition(), bloodDir); int damageAmount = Mathf.RoundToInt(30 * e.damageMultiplier * UnityEngine.Random.Range(.8f, 1.2f)); DamagePopup.Create(GetPosition(), damageAmount, false); enemyMain.HealthSystem.Damage(damageAmount); //Sound_Manager.PlaySound(Sound_Manager.Sound.BodyHit_1, GetPosition()); if (enemyMain.HealthSystem.IsDead()) { FlyingBody.Create(GameAssets.i.pfEnemyFlyingBody, GetPosition(), bloodDir); enemyMain.DestroySelf(); Sound_Manager.PlaySound(Sound_Manager.Sound.Minion_Dead, GetPosition()); } else { // Knockback enemyMain.EnemyRigidbody2D.MovePosition(transform.position + bloodDir * 5f); } }
private void PlayerCharacterHandler_OnEnemyKilled(object sender, EnemyHealth.OnEnemyKilledEventArgs e) { // Vector3 enemyPos = GetComponent<EnemyCharacterHandler>().ActualEnemyPosition; Vector3 flyDirection = (enemyCharacterHandler.GetPosition() - playerCharacterHandler.GetPosition()).normalized; FlyingBody.Create(pfEnemyDeadBody, enemyCharacterHandler.GetPosition(), flyDirection); enemy.SetActive(false); UtilsClass.ShakeCamera(2f, .1f); }
public void Damage(CharacterBattle attacker, int damageAmount) { //damageAmount = 1; Debug.Log("##### No Damage"); Vector3 bloodDir = (GetPosition() - attacker.GetPosition()).normalized; Blood_Handler.SpawnBlood(GetPosition(), bloodDir); SoundManager.PlaySound(SoundManager.Sound.CharacterDamaged); DamagePopup.Create(GetPosition(), damageAmount, false); healthSystem.Damage(damageAmount); DamageFlash(); playerBase.GetUnitAnimation().PlayAnimForced(hitUnitAnimType, GetTargetDir(), 1f, (UnitAnim unitAnim) => { PlayIdleAnim(); }, null, null); if (IsDead()) { if (!IsPlayerTeam()) { // Enemy if (characterType != Character.Type.EvilMonster && characterType != Character.Type.EvilMonster_2 && characterType != Character.Type.EvilMonster_3) { // Don't spawn Flying Body for Evil Monster FlyingBody.Create(GameAssets.i.pfEnemyFlyingBody, GetPosition(), bloodDir); SoundManager.PlaySound(SoundManager.Sound.CharacterDead); } gameObject.SetActive(false); } else { // Player Team stats.special = 0; SoundManager.PlaySound(SoundManager.Sound.OooohNooo); } playerBase.GetUnitAnimation().PlayAnimForced(UnitAnim.GetUnitAnim("LyingUp"), 1f, null); healthWorldBar.Hide(); transform.localScale = new Vector3(-1, 1, 1); //gameObject.SetActive(false); //Destroy(gameObject); } else { // Knockback /* * transform.position += bloodDir * 5f; * if (hitUnitAnim != null) { * state = State.Busy; * enemyBase.PlayHitAnimation(bloodDir * (Vector2.one * -1f), SetStateNormal); * } */ } }
protected override void OnUpdate() { EntityQuery entityQuery = GetEntityQuery(typeof(Zombie)); int entityCount = entityQuery.CalculateEntityCount(); MarineShotZombieAction marineShotZombieAction; while (TestECS.queuedActions.TryDequeue(out marineShotZombieAction)) { if (EntityManager.Exists(marineShotZombieAction.marineEntity) && EntityManager.Exists(marineShotZombieAction.zombieEntity)) { float3 marinePosition = EntityManager.GetComponentData <Translation>(marineShotZombieAction.marineEntity).Value; float3 zombiePosition = EntityManager.GetComponentData <Translation>(marineShotZombieAction.zombieEntity).Value; float3 marineToZombieDir = math.normalize(zombiePosition - marinePosition); bool bonusEffects = (entityCount < 400 || UnityEngine.Random.Range(0, 100) < 60); if (bonusEffects) { WeaponTracer.Create(marinePosition + marineToZombieDir * 10f, (Vector3)zombiePosition + UtilsClass.GetRandomDir() * UnityEngine.Random.Range(0, 20f)); Shoot_Flash.AddFlash(marinePosition + marineToZombieDir * 14f); Blood_Handler.SpawnBlood(2, zombiePosition, marineToZombieDir); UtilsClass.ShakeCamera(TestECS.GetCameraShakeIntensity(), .05f); //Sound_Manager.PlaySound(Sound_Manager.Sound.Rifle_Fire, marinePosition); } Health zombieHealth = EntityManager.GetComponentData <Health>(marineShotZombieAction.zombieEntity); zombieHealth.health -= marineShotZombieAction.damageAmount; if (zombieHealth.health < 0) { // Zombie dead! FlyingBody.TryCreate(GameAssets.i.pfEnemyFlyingBody, zombiePosition, marineToZombieDir); EntityManager.DestroyEntity(marineShotZombieAction.zombieEntity); EntityManager.RemoveComponent <HasTarget>(marineShotZombieAction.marineEntity); } else { // Zombie still has health EntityManager.SetComponentData(marineShotZombieAction.zombieEntity, zombieHealth); } } else { if (EntityManager.Exists(marineShotZombieAction.marineEntity) && !EntityManager.Exists(marineShotZombieAction.zombieEntity)) { // Marine exists but zombie is dead EntityManager.RemoveComponent <HasTarget>(marineShotZombieAction.marineEntity); } } } }
public void Damage(Vector3 attackerPosition) { Vector3 bloodDir = (GetPosition() - attackerPosition).normalized; Blood_Handler.SpawnBlood(GetPosition(), bloodDir); // Knockback transform.position += bloodDir * 1.5f; health--; if (health == 0) { FlyingBody.Create(GameAssets.i.pfEnemyFlyingBody, GetPosition(), bloodDir); gameObject.SetActive(false); //transform.Find("Body").gameObject.SetActive(false); } }
public void Damage(EnemyAim attacker) { Vector3 bloodDir = (GetPosition() - attacker.GetPosition()).normalized; Blood_Handler.SpawnBlood(GetPosition(), bloodDir); healthSystem.Damage(1); if (IsDead()) { FlyingBody.Create(GameAssets.i.pfEnemyFlyingBody, GetPosition(), bloodDir); playerBase.DestroySelf(); Destroy(gameObject); } else { // Knockback transform.position += bloodDir * 2.5f; } }
public void Damage(UnitGridCombat attacker, int damageAmount) { Vector3 bloodDir = (GetPosition() - attacker.GetPosition()).normalized; Blood_Handler.SpawnBlood(GetPosition(), bloodDir); DamagePopup.Create(GetPosition(), damageAmount, false); healthSystem.Damage(damageAmount); if (healthSystem.IsDead()) { FlyingBody.Create(GameAssets.i.pfEnemyFlyingBody, GetPosition(), bloodDir); Destroy(gameObject); } else { // Knockback //transform.position += bloodDir * 5f; } }
public void Damage(IEnemyTargetable attacker, int damageAmount) { Vector3 bloodDir = (GetPosition() - attacker.GetPosition()).normalized; Blood_Handler.SpawnBlood(4, GetPosition(), bloodDir); health -= damageAmount; if (IsDead()) { FlyingBody.Create(GameAssets.i.pfEnemyFlyingBody, GetPosition(), bloodDir); Destroy(gameObject); } else { // Knockback /*transform.position += bloodDir * 5f; * if (hitUnitAnim != null) { * state = State.Busy; * unitAnimation.PlayAnimForced(hitUnitAnim, bloodDir * (Vector2.one * -1f), 1f, (UnitAnim unitAnim) => { * state = State.Normal; * }, null, null); * }*/ } }
public void Damage(IEnemyTargetable attacker) { Vector3 bloodDir = (GetPosition() - attacker.GetPosition()).normalized; //Blood_Handler.SpawnBlood(GetPosition(), bloodDir); health--; if (IsDead()) { FlyingBody.Create(GameAssetsDefault.i.pfEnemyFlyingBody, GetPosition(), bloodDir); Destroy(gameObject); } else { // Knockback transform.position += bloodDir * 5f; if (hitUnitAnim != null) { state = State.Busy; unitAnimation.PlayAnimForced(hitUnitAnim, bloodDir * (Vector2.one * -1f), 1f, (UnitAnim unitAnim) => { state = State.Normal; }, null, null); } } }