Ejemplo n.º 1
0
 // Update is called once per frame
 void Update()
 {
     if (healthSystem.GetCurrentHealth() == 0)
     {
         Destroy(gameObject);
     }
     if (vertical)
     {
         //lr.SetPosition(0, new Vector3(transform.position.x, posLr.y + limitY, -1));
         //lr.SetPosition(1, new Vector3(transform.position.x, posLr.y - limitY, -1));
         transform.position = Vector2.MoveTowards(transform.position, nextPos, speed * Time.deltaTime);
         if (Vector2.Distance(transform.position, nextPos) <= 0.1)
         {
             anim.SetBool("isRunning", true);
             changePos();
         }
     }
     else
     {
         //lr.SetPosition(0, new Vector3(posLr.x + limitX, transform.position.y, -1));
         //lr.SetPosition(1, new Vector3(posLr.x - limitX, transform.position.y, -1));
         transform.position = Vector2.MoveTowards(transform.position, nextPos, speed * Time.deltaTime);
         if (Vector2.Distance(transform.position, nextPos) <= 0.1)
         {
             anim.SetBool("isRunning", true);
             changePos();
         }
     }
 }
Ejemplo n.º 2
0
    // Update is called once per frame
    void Update()
    {
        target = inicial;

        if (healthSystem.GetCurrentHealth() <= 0)
        {
            shake.shaker();
            Instantiate(deathEfect, transform.position, Quaternion.identity);
            Instantiate(deathParticules, transform.position, Quaternion.identity);
            Instantiate(bloodStain, transform.position, Quaternion.identity);
            Destroy(gameObject);
        }
        else if (healthSystem.GetCurrentHealth() == 45)
        {
            anim.SetBool("isEnraged", true);
            speed = 3f;
        }
        else
        {
            barril.transform.up = player.transform.position - barril.transform.position;
            RaycastHit2D hitInfo = Physics2D.Raycast(barril.position, barril.up, 7);
            if (player.transform.position.x > transform.position.x)
            {
                transform.localScale = new Vector3(1, 1, 1);
            }
            else if (player.transform.position.x < transform.position.x)
            {
                transform.localScale = new Vector3(-1, 1, 1);
            }
            anim.ResetTrigger("Attacking");
            anim.SetBool("isRunning", false);
            if (hitInfo && hitInfo.collider != null && !hitInfo.collider.CompareTag("ExtrasTileMap"))
            {
               

                if (Vector3.Distance(transform.position, player.transform.position) >= 3 && !hitInfo.collider.CompareTag("Enemy"))
                {
                    anim.SetBool("isRunning", true);
                    move(player.transform.position, speed);
                }
                //else if (Vector3.Distance(transform.position, player.transform.position) < 2.8f && !hitInfo.collider.CompareTag("Enemy"))
                //{
                //    anim.SetBool("isRunning", true);
                //    move(player.transform.position, -speed);
                //}
                else
                {
                    anim.SetTrigger("Attacking");
                    anim.SetBool("isRunning", false);
                }
            }
        }

    }
Ejemplo n.º 3
0
    // Update is called once per frame
    void FixedUpdate()
    {
        Debug.Log(Vector3.Distance(transform.position, player.transform.position) > 6);
        target = inicial;

        if (healthSystem.GetCurrentHealth() <= 0)
        {
            shake.shaker();
            Instantiate(deathEfect, transform.position, Quaternion.identity);
            Instantiate(deathParticules, transform.position, Quaternion.identity);
            Instantiate(bloodStain, transform.position, Quaternion.identity);
            Destroy(gameObject);
        }
        else
        {
            if (player.transform.position.x > transform.position.x)
            {
                //face right
                transform.localScale = new Vector3(1, 1, 1);
            }
            else if (player.transform.position.x < transform.position.x)
            {
                //face left
                transform.localScale = new Vector3(-1, 1, 1);
            }
            barril.transform.up = player.transform.position - barril.transform.position;
            anim.ResetTrigger("isAttacking");
            RaycastHit2D hitInfo = Physics2D.Raycast(barril.position, barril.up);
            if (hitInfo && hitInfo.collider != null && !hitInfo.collider.CompareTag("ExtrasTileMap"))
            {
                if (Vector3.Distance(transform.position, player.transform.position) >= 10)
                {
                    anim.SetBool("isRunning", true);
                    move(player.transform.position, speed);
                }
                else if (Vector3.Distance(transform.position, player.transform.position) < 5f && !hitInfo.collider.CompareTag("Enemy"))
                {
                    anim.SetBool("isRunning", true);
                    move(player.transform.position, -speed);
                }
                else
                {
                    anim.SetBool("isRunning", false);
                }
                if ((hitInfo.collider.CompareTag("Player") || hitInfo.collider.CompareTag("Shield")) && Vector3.Distance(transform.position, player.transform.position) <= 18)
                {
                    anim.SetTrigger("isAttacking");
                }
            }
        }
    }
Ejemplo n.º 4
0
    private void UpdateUi()
    {
        healthImage.enabled     = true;
        backgroundImage.enabled = true;

        float currentHealth  = healthSystem.GetCurrentHealth();
        float startingHealth = healthSystem.GetStartingHealth();
        float smallHealth    = (currentHealth / startingHealth);


        if (smallHealth < 0.5f && smallHealth > 0.25f)
        {
            healthImage.color = new Color(251, 127, 0);
        }
        if (smallHealth < 0.25f)
        {
            healthImage.color = new Color(255, 0, 0);
        }

        float fillAmount = Mathf.Lerp(healthImage.fillAmount, smallHealth, Time.deltaTime * lerpSpeed);

        healthImage.fillAmount = fillAmount;

        if (Math.Abs(healthImage.fillAmount - smallHealth) > 0.01)
        {
            Invoke(nameof(UpdateUi), Time.deltaTime);
        }
    }
    public void TakeDamage(int damageAmount)
    {
        if (!_healthSystem.CanTakeDamageAgain)
        {
            _healthSystem.ModifyHealth(damageAmount);

            if (_healthSystem.GetCurrentHealth() <= 0)
            {
                //Game Over Player
                Debug.Log("Can't go lower, guess i'll die");
                _sceneController.LoadScene(0);
            }
        }
        else
        {
            Debug.Log("Invincible, Monsters !");
        }
    }
Ejemplo n.º 6
0
    // Update is called once per frame
    void Update()
    {
        if (player.transform.position.x > transform.position.x)
        {
            //face right
            transform.localScale = new Vector3(1, 1, 1);
        }
        else if (player.transform.position.x < transform.position.x)
        {
            //face left
            transform.localScale = new Vector3(-1, 1, 1);
        }
        //GetComponent<SpriteRenderer>().flipX = player.transform.position.x < transform.position.x;
        if (healthSystem.GetCurrentHealth() <= 0)
        {
            shake.shaker();
            Instantiate(deathEfect, transform.position, Quaternion.identity);
            Instantiate(deathParticules, transform.position, Quaternion.identity);
            Instantiate(bloodStain, transform.position, Quaternion.identity);
            Destroy(gameObject);
        }
        else
        {
            barril.transform.up = player.transform.position - barril.transform.position;
            RaycastHit2D hit = Physics2D.Raycast(barril.position, barril.up);
            anim.SetBool("isRunning", false);

            anim.ResetTrigger("Attacking");
            if (hit.collider != null && !hit.collider.CompareTag("ExtrasTileMap"))
            {
                if (Vector3.Distance(transform.position, player.transform.position) > 1.9f && !hit.collider.CompareTag("EnemyTriangule"))
                {
                    anim.SetBool("isRunning", true);
                    move(player.transform.position, speed);
                }
                else if (Vector3.Distance(transform.position, player.transform.position) <= 1.9f)
                {
                    anim.SetBool("isRunning", false);
                    anim.SetTrigger("Attacking");
                }
            }
        }
    }
    /// <summary>
    /// Sets the current health system and updates the local parameters.
    /// </summary>

    public void SetHealthSystem(HealthSystem healthSystem)
    {
        this.healthSystem = healthSystem;

        currentHealth = healthSystem.GetCurrentHealth();
        maxHealth     = healthSystem.GetCurrentMaxHealth();

        healthSystem.OnHealthChanged    += HealthSystem_OnHealthChanged;
        healthSystem.OnMaxHealthChanged += HealthSystem_OnMaxHealthChanged;

        Player.instance.levelSystemAnimation.OnLevelChanged += LevelSystemAnimation_OnLevelChanged;
    }
Ejemplo n.º 8
0
    void UpdateTargetUI()
    {
        HealthBar.gameObject.SetActive(true);
        TargetName.gameObject.SetActive(true);
        TargetWorth.gameObject.SetActive(true);
        TargetName.text  = target.GetComponent <Enemy>().GetName();
        TargetWorth.text = GetTargetWorth() + " points";

        HealthSystem hs = target.GetComponent <HealthSystem>();

        HealthFill.fillAmount = (float)hs.GetCurrentHealth() / (float)hs.GetMaxHealth();
    }
Ejemplo n.º 9
0
    void Update()
    {
        distanceToPlayer              = Vector3.Distance(transform.position, player.transform.position);
        distanceToDefendObject        = Vector3.Distance(transform.position, defendObject.transform.position);
        playerRelativeDirection       = player.transform.InverseTransformPoint(transform.position);
        defendObjectRelativeDirection = defendObject.transform.InverseTransformPoint(transform.position);

        Chase(distanceToPlayer, distanceToDefendObject);
        if (enemyHealth.GetCurrentHealth() <= 0)
        {
            Destroy(gameObject);
        }
    }
Ejemplo n.º 10
0
 // Update is called once per frame
 void Update()
 {
     if (healthSystem.GetCurrentHealth() < 0)
     {
         shake.shaker();
         Instantiate(deathEfect, transform.position, Quaternion.identity);
         Instantiate(deathParticules, transform.position, Quaternion.identity);
         Instantiate(bloodStain, transform.position, Quaternion.identity);
         Destroy(gameObject);
     }
     else
     {
         if (player.transform.position.x > transform.position.x)
         {
             //face right
             transform.localScale = new Vector3(1, 1, 1);
         }
         else if (player.transform.position.x < transform.position.x)
         {
             //face left
             transform.localScale = new Vector3(-1, 1, 1);
         }
         barril.transform.up = player.transform.position - barril.transform.position;
         RaycastHit2D hitInfo = Physics2D.Raycast(barril.position, barril.up, 2);
         if (hitInfo && hitInfo.collider != null && (hitInfo.collider.CompareTag("ExtrasTileMap") || hitInfo.collider.CompareTag("EnemyCircle")))
         {
             target = transform.position;
         }
         else if ((target == transform.position))
         {
             target = player.transform.position;
         }
         else
         {
             anim.SetBool("isRunning", true);
             transform.position = Vector2.MoveTowards(transform.position, target, speed * Time.deltaTime);
         }
     }
 }
    /// <summary>
    /// Responsible for updating the experience bar.
    /// </summary>

    private void UpdateHealth()
    {
        if (currentHealth < healthSystem.GetCurrentHealth())
        {
            // local current health is less than the target health

            Heal();
        }
        else
        {
            if (currentHealth > healthSystem.GetCurrentHealth())
            {
                // local current health is more than the target health

                TakeDamage();
            }
            else
            {
                // local current health equals the target health

                isAnimating = false;
            }
        }
    }
Ejemplo n.º 12
0
    public void TakeDamage(int damageAmount)
    {
        if (!HealthSystem.CanTakeDamageAgain)
        {
            HealthSystem.ModifyHealth(damageAmount);

            if (HealthSystem.GetCurrentHealth() == 0)
            {
                StartCoroutine(waitToDie());
            }

            if (_enemyType == EnemyType.Boss)
            {
                _bossController.ModifyLifeView(damageAmount);
                _bossController.UpdateView();
            }
        }
        else
        {
            Debug.Log("I'm InvincibleForNowMortal");
        }
    }
Ejemplo n.º 13
0
 public void AddHealth(int heal)
 {
     health.Heal(heal);
     StartCoroutine(flashHeatlh());
     healthBar.SetHealth(health.GetCurrentHealth());
 }
Ejemplo n.º 14
0
        private void OnTriggerEnter(Collider col)
        {
            // Trap collisions
            if (col.gameObject.GetComponent <Trap>())
            {
                var colTrapComponent = col.GetComponent <Trap>();

                //direction towards the col
                var colliderWithoutZ = new Vector3(colTrapComponent.GetColliderCenterPosition().x, colTrapComponent.GetColliderCenterPosition().y, 0);
                var playerWithoutZ   = new Vector3(playerMovement.GetColliderCenterPosition().x, playerMovement.GetColliderCenterPosition().y, 0);
                //Vector3 toCollider = (col.transform.position - playerMovement.GetColliderCenterPosition()).normalized;
                Vector3 toCollider = colliderWithoutZ - playerWithoutZ;

                RaycastHit hit;
                if (Physics.Raycast(playerMovement.GetColliderCenterPosition(), toCollider, out hit))
                {
                    if (debug)
                    {
                        Debug.DrawRay(playerMovement.GetColliderCenterPosition(), toCollider, Color.blue, 1.0f);
                    }

                    // Contact point info
                    Vector3 contactPoint       = hit.point;
                    Vector3 contactPointNormal = hit.normal;
                    // Get trap infos
                    TrapConfig trapConfig = col.gameObject.GetComponent <Trap>().GetTrapConfig();
                    TrapTypes  trapType   = trapConfig.GetTrapType();

                    //*** Damage ***//
                    // Instant kill or trap damage
                    if (trapConfig.IsInstantKill())
                    {
                        playerHealth.TakeDamage(playerHealth.GetCurrentHealth());
                    }
                    else
                    {
                        playerHealth.TakeDamage(trapConfig.GetTrapDamage());
                    }

                    //*** Knockback ***//
                    //Freeze player for a time && Push him on the opposite side
                    if (trapConfig.IsKockbackEnabled())
                    {
                        playerMovement.Knockback(trapConfig.GetHitKnockbackTime(), trapConfig.GetKnockbackForceX(), trapConfig.GetKnockbackForceY(), contactPointNormal);
                    }

                    //*** Collision effect ***//
                    SpawnTrapCollisionParticleByContact(contactPoint, contactPointNormal, trapConfig);
                    SpawnTrapHitParticle(trapConfig);

                    //*** Player Hit effect ***//


                    //***TRAPS SPECIFIC LOGIC***// Call trap-specific code
                    switch (trapType)
                    {
                        #region VOID
                    case TrapTypes.Void:

                        break;
                        #endregion

                        #region FIRE
                    case TrapTypes.Fire:

                        break;
                        #endregion

                        #region SPIKES
                    case TrapTypes.Spikes:

                        break;
                        #endregion

                        #region LASER
                    case TrapTypes.Laser:

                        break;

                        #endregion
                    default:
                        break;
                    }
                }
            }
        }