Ejemplo n.º 1
0
    // 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;
                }
            }
        }
    }
Ejemplo n.º 2
0
    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();
    }
Ejemplo n.º 4
0
    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;
            }
        }
    }
Ejemplo n.º 5
0
    // Update is called once per frame
    void Update()
    {
        healthbar.value = health.GetHPFraction();

        healthbar.gameObject.SetActive(health.GetAlive());
    }