// Update is called once per frame void Update() { isFacingRight = transform.parent.GetComponent <PlayerMovement>().IsFacingRight(); if (Input.GetKeyDown(KeyCode.Alpha1)) { AbilityScripts.GetComponent <HealAbilityScript>().SetIsActive(true); } else if (Input.GetKeyDown(KeyCode.Alpha2)) { AbilityScripts.GetComponent <ShieldAbilityScript>().SetIsActive(true); } else if (Input.GetKeyDown(KeyCode.Alpha3)) { AbilityScripts.GetComponent <LightningAbility>().SetIsActive(true); } if (Input.GetKeyDown(KeyCode.F) && isTouchingAI) { ChipMenuScript chipMenu = ChipMenu.GetComponent <ChipMenuScript>(); if (chipMenu.LootMenuIsOpen) { chipMenu.CloseMenu(); chipMenu.CloseLootInventory(); GameStateManager.gameState = GameState.Running; } else if (healthScript.GetAlive()) { HealthScript other_hs = LastAITouched.GetComponent <HealthScript>(); if (other_hs && !other_hs.GetAlive()) { GameStateManager.gameState = GameState.ChipMenu; if (!other_hs.IsLooted) { //Generate Loot other_hs.IsLooted = true; chipMenu.GenerateLoot(LastAITouched); } //Move this to outside if statement once decide to actually code re-visiting bodies chipMenu.OpenMenu(); chipMenu.OpenLootInventory(); chipMenu.DisplayLoot(LastAITouched); chipMenu.LastDeadboi = LastAITouched; } } } }
void OnTriggerEnter2D(Collider2D other) { if (healthScript.GetAlive() && other.tag == "AI") { HealthScript other_hs = other.transform.gameObject.GetComponent <HealthScript>(); if (other_hs && !other_hs.GetAlive()) { isTouchingAI = true; LastAITouched = other.gameObject; } } }
// Update is called once per frame void Update() { if (GameStateManager.gameState != GameState.Running) { return; } if (healthscript.GetAlive()) { distBetwAIandPlayer = (GetComponent <Transform>().position - GameObject.Find("Player").GetComponent <Transform>().position).magnitude; if (ForceReturn) { UpdateMovement(); } else if (!isAttacking || (Mathf.Abs(distBetwAIandPlayer) > maxMovementRange)) { UpdateMovement(); } } CheckAttackRange(); }
void ActuallyDoDamage() { if (CompareTag("AI") || CompareTag("Follower")) { if (myhealthscript.GetAlive()) { if ((EnableRanged && rangedBasicCooldownTimer == 0.0f) || (EnableMelee && meleeBasicCooldownTimer == 0.0f)) { Collider2D[] enemiesToDamage; if (EnableMelee && movement.isAttacking) { enemiesToDamage = Physics2D.OverlapCircleAll(MeleeAttackPos.position, MeleeAttackRadius, EnemyMask); foreach (Collider2D player in enemiesToDamage) { if (!player.GetComponent <HealthScript>().GetAlive()) { movement.isAttacking = false; } } if (enemiesToDamage.Length > 0) { foreach (Collider2D player in enemiesToDamage) { player.GetComponent <HealthScript>().TakeDamage(RangedDamage); animator.SetTrigger("IsAttacking"); } } } if (EnableRanged && movement.isAttacking) { enemiesToDamage = Physics2D.OverlapCircleAll(RangedAttackPos.position, RangedAttackRadius, EnemyMask); foreach (Collider2D player in enemiesToDamage) { if (player.GetComponent <HealthScript>() != null && !player.GetComponent <HealthScript>().GetAlive()) { movement.isAttacking = false; } } if (CompareTag("Follower")) { foreach (Collider2D enemy in enemiesToDamage) { if (enemy.CompareTag("AI")) { player = enemy.gameObject; break; } } } Vector3 endPos = player.transform.position; Vector3 velocity = endPos - RangedAttackPos.position; velocity.z = 0.0f; // So that normalize will ignore the magnitude of z if (!movement.isFacingRight) { GameObject p; p = Instantiate(projectile, RangedAttackPos.position, transform.rotation); velocity.Normalize(); p.GetComponent <Projectile>().SetParams(RangedDamage, ProjectileLifetime, EnemyMask); p.GetComponent <Rigidbody2D>().velocity = velocity * ProjectileSpeed; if (movement.isFacingRight && velocity.x < 0) { p.GetComponent <Transform>().rotation = Quaternion.Euler(0, 180, 0); } if (!movement.isFacingRight && velocity.x > 0) { p.GetComponent <Transform>().rotation = Quaternion.Euler(0, 0, 0); } movement.isAttacking = true; animator.SetTrigger("IsAttacking"); } } if (EnableRanged) { rangedBasicCooldownTimer = RangedBasicAttackCooldown; } if (EnableMelee) { meleeBasicCooldownTimer = MeleeBasicAttackCooldown; } } } } if (CompareTag("Player")) { if (Input.GetMouseButton(0) || Input.GetMouseButtonDown(0) || Input.GetMouseButton(1) || Input.GetMouseButtonDown(1)) { if ((EnableRanged && rangedBasicCooldownTimer == 0.0f) || (EnableMelee && meleeBasicCooldownTimer == 0.0f)) { if (EnableRanged) { Vector3 endPos = Camera.main.ScreenToWorldPoint(Input.mousePosition); Vector3 velocity = endPos - RangedAttackPos.position; velocity.z = 0.0f; // So that normalize will ignore the magnitude of z velocity.Normalize(); GameObject p; p = Instantiate(projectile, RangedAttackPos.position, transform.rotation); p.GetComponent <Projectile>().SetParams(RangedDamage, ProjectileLifetime, EnemyMask); p.GetComponent <Rigidbody2D>().velocity = velocity * ProjectileSpeed; // Rotate image of bullet accordingly PlayerScript playerscript = gameObject.GetComponent <PlayerScript>(); float angle = Vector2.SignedAngle(new Vector2(1.0f, 0.0f), endPos - RangedAttackPos.position); p.GetComponent <Transform>().rotation = Quaternion.Euler(0, 0, angle); animator.SetTrigger("IsShooting"); } if (EnableMelee) { Collider2D[] enemiesToDamage = Physics2D.OverlapCircleAll(MeleeAttackPos.position, MeleeAttackRadius, EnemyMask); List <GameObject> enemyList = new List <GameObject>(); foreach (Collider2D enemy in enemiesToDamage) { enemyList.Add(enemy.gameObject); } enemyList = enemyList.SortByDistance(transform.position); int enemiesPerHit = 1; if (enemyList.Count > 0) { for (int i = 0; i < enemiesPerHit; ++i) { enemyList[i].GetComponent <HealthScript>().TakeDamage(MeleeDamage, transform.position); } } animator.SetTrigger("IsMeleeing"); } if (EnableRanged) { rangedBasicCooldownTimer = RangedBasicAttackCooldown; } if (EnableMelee) { meleeBasicCooldownTimer = MeleeBasicAttackCooldown; } } GameObject.Find("Melee Follower").GetComponent <ShittyAIScript>().isMovingRight = true; } } }
// Update is called once per frame void Update() { healthbar.value = health.GetHPFraction(); healthbar.gameObject.SetActive(health.GetAlive()); }