Ejemplo n.º 1
0
    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);
            }
        }
    }
Ejemplo n.º 2
0
    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);
    }
Ejemplo n.º 3
0
        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);
            }
        }
Ejemplo n.º 4
0
    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);
    }
Ejemplo n.º 5
0
    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);
             * }
             */
        }
    }
Ejemplo n.º 6
0
    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);
                }
            }
        }
    }
Ejemplo n.º 7
0
    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);
        }
    }
Ejemplo n.º 8
0
    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;
        }
    }
Ejemplo n.º 9
0
    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;
        }
    }
Ejemplo n.º 10
0
    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);
             * }*/
        }
    }
Ejemplo n.º 11
0
    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);
            }
        }
    }