// 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(); } } }
// 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); } } } }
// 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"); } } } }
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 !"); } }
// 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; }
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(); }
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); } }
// 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; } } }
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"); } }
public void AddHealth(int heal) { health.Heal(heal); StartCoroutine(flashHeatlh()); healthBar.SetHealth(health.GetCurrentHealth()); }
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; } } } }