Ejemplo n.º 1
0
    private void IceBallAttack()
    {
        int numberProjectile = PlayerCharacteristics.GetValue(PowerShape.Type.ICE_BALL_UP1) ? 4 : 2;

        for (int i = 0; i < numberProjectile; i++)
        {
            GameObject iceball = Instantiate(iceballModel);
            iceball.transform.parent   = transform;
            iceball.transform.position = iceBallOrigins[i].position;
            iceball.transform.up       = spritesParent.transform.up;
            iceball.transform.SetParent(objects.transform);

            iceball.GetComponent <ProjectileController>().Shoot(iceBallOrigins[i].position - transform.position, gameObject.tag, GameParameters.iceballSpeed, damage);

            CircleCollider2D iceballCollider = iceball.GetComponent <CircleCollider2D>();
            // Ignore collision between the player and the bullet (trigger ok)
            Physics2D.IgnoreCollision(mainCollider, iceballCollider);

            if (rockshield.Count > 0)
            {
                IgnoreCollisionWithRockShield(iceballCollider);
            }
            if (airshield != null)
            {
                IgnoreCollisionWithAirShield(iceballCollider);
            }
        }
    }
Ejemplo n.º 2
0
    private void Start()
    {
        spritesParent.GetComponent <SpriteRenderer>().sprite = GameParameters.PlayerSprite;
        attackSpeed = PlayerCharacteristics.GetValue(PowerShape.Type.ATTACK_SPEED_UP1) ?
                      (GameParameters.playerAttackSpeedUpgrade2) : // upgrade 2
                      (PlayerCharacteristics.GetValue(PowerShape.Type.ATTACK_SPEED) ?
                       GameParameters.playerAttackSpeedUpgrade1 :  // upgrade 1
                       GameParameters.playerAttackSpeedDefault);   // no upgrade

        damage = PlayerCharacteristics.GetValue(PowerShape.Type.ATTACK_DAMAGE_UP1) ?
                 (GameParameters.playerDamageUpgrade2) : // upgrade 2
                 (PlayerCharacteristics.GetValue(PowerShape.Type.ATTACK_DAMAGE) ?
                  GameParameters.playerDamageUpgrade1 :  // upgrade 1
                  GameParameters.playerDamageDefault);   // no upgrade

        characterSpeed = PlayerCharacteristics.GetValue(PowerShape.Type.SPEED_MOVEMENT_UP1) ?
                         (GameParameters.playerSpeedUpgrade2) : // upgrade 2
                         (PlayerCharacteristics.GetValue(PowerShape.Type.SPEED_MOVEMENT) ?
                          GameParameters.playerSpeedUpgrade1 :  // upgrade 1
                          GameParameters.playerSpeedDefault);   // no upgrade

        rockshield = new List <GameObject>();
        if (PlayerCharacteristics.GetValue(PowerShape.Type.ROCK_SHIELD))
        {
            GameParameters.numberOfRockShield = PlayerCharacteristics.GetValue(PowerShape.Type.ROCK_SHIELD_UP1) ? GameParameters.numberOfRockShieldUpgrade : GameParameters.numberOfRockShieldDefault;
            GenerateRockShield();
            ActivateRockShield();
        }
        if (PlayerCharacteristics.GetValue(PowerShape.Type.AIR_SHIELD))
        {
            GameParameters.airShieldActivationRange = PlayerCharacteristics.GetValue(PowerShape.Type.AIR_SHIELD) ? GameParameters.airShieldActivationRangeUpgrade : GameParameters.airShieldActivationRangeDefault;
            CreateAirShield();
        }
        GetSpriteRenderer();
    }
Ejemplo n.º 3
0
 private void Awake()
 {
     if (PlayerCharacteristics.GetValue(PowerShape.Type.WATTER_WALK)) // player water perks
     {
         Physics2D.IgnoreCollision(GetComponent <BoxCollider2D>(), GameObject.FindGameObjectWithTag("Player").GetComponent <CircleCollider2D>());
     }
 }
Ejemplo n.º 4
0
    private void FireballAttack()
    {
        int numberProjectile = PlayerCharacteristics.GetValue(PowerShape.Type.FIRE_BALL_UP1) ? 3 : 1;

        for (int i = 0; i < numberProjectile; i++)
        {
            // Generate fireball
            GameObject fireball = Instantiate(fireballModel);
            fireball.transform.position = fireballOrigins[i].position;
            fireball.transform.right    = fireballOrigins[i].right;
            fireball.transform.SetParent(objects.transform);

            ProjectileController projectileController = fireball.GetComponent <ProjectileController>();
            projectileController.Shoot(fireball.transform.up, gameObject.tag, GameParameters.fireballSpeed, damage);

            CircleCollider2D fireballCollider = fireball.GetComponent <CircleCollider2D>();
            // Ignore collision between the player and the fireball (trigger ok)
            Physics2D.IgnoreCollision(mainCollider, fireballCollider);
            if (rockshield.Count > 0)
            {
                IgnoreCollisionWithRockShield(fireballCollider);
            }
            if (airshield != null)
            {
                IgnoreCollisionWithAirShield(fireballCollider);
            }
        }
    }
Ejemplo n.º 5
0
 protected override void SetMaxHealth()
 {
     maxHealth = PlayerCharacteristics.GetValue(PowerShape.Type.MAX_HEALTH_UP1) ?
                 (GameParameters.playerMaxHealthUpgrade2) : // upgrade 2
                 (PlayerCharacteristics.GetValue(PowerShape.Type.MAX_HEALTH) ?
                  GameParameters.playerMaxHealthUpgrade1 :  // upgrade 1
                  GameParameters.playerMaxHealthDefault);   // no upgrade
 }
Ejemplo n.º 6
0
 private void DamagePlayer(Collider2D collision)
 {
     if (!PlayerCharacteristics.GetValue(PowerShape.Type.LAVA_RESISTANT)) // can levitate lava
     {
         if (collision.tag == "Player")
         {
             collision.gameObject.GetComponent <PlayerController>().Damage(GameParameters.LAVA_DAMAGE);
             Debug.Log("QUEUE");
         }
     }
 }
Ejemplo n.º 7
0
    public bool CanBePlacedOnInventory()
    {
        foreach (Type item in Dependencies)
        {
            if (!PlayerCharacteristics.GetValue(item))
            {
                return(false);
            }
        }

        return(true);
    }
Ejemplo n.º 8
0
    public override void Attack()
    {
        if (canAttack)
        {
            if (PlayerCharacteristics.GetValue(PowerShape.Type.FIRE_BALL))
            {
                FireballAttack();
            }

            if (PlayerCharacteristics.GetValue(PowerShape.Type.ICE_BALL))
            {
                IceBallAttack();
            }
            StartCoroutine(AttackCooldown());
        }
    }
Ejemplo n.º 9
0
 public virtual void Damage(float damage)
 {
     health -= damage;
     if (health <= 0)
     {
         if (tag != "Player" && PlayerCharacteristics.GetValue(PowerShape.Type.LIFE_STEAL))
         {
             GameObject.FindGameObjectWithTag("Player").GetComponent <CharacterController>().Heal(GameParameters.lifeSteal);
         }
         if (tag == "Player")
         {
             SceneManager.LoadScene("MainMenuScene");
         }
         Destroy(gameObject);
     }
 }
Ejemplo n.º 10
0
    // Start is called before the first frame update
    void Awake()
    {
        if (spritesParent == null)
        {
            spritesParent = gameObject;
        }
        rigid2d      = GetComponent <Rigidbody2D>();
        mainCollider = GetComponent <CircleCollider2D>();

        SetMaxHealth();
        health = maxHealth;

        lifebar = transform.Find("LifeBar").Find("CurrentLifeParent").gameObject;
        transform.Find("LifeBar").gameObject.SetActive(PlayerCharacteristics.GetValue(PowerShape.Type.PRIM_LIFEBAR_VISION));
        startLifeBarWidth = lifebar.transform.localScale.x;

        Physics2D.IgnoreCollision(mainCollider, GameObject.FindGameObjectWithTag("Player").GetComponent <Collider2D>());
    }
Ejemplo n.º 11
0
    private void CheckInputs()
    {
        currentMove = Vector2.zero;

        float moveY = 0;
        float moveX = 0;

        if (PlayerCharacteristics.GetValue(PowerShape.Type.PRIM_MOVEMENT))
        {
            moveY = Input.GetAxisRaw("Vertical");
            moveX = Input.GetAxisRaw("Horizontal");
        }

        if (Input.GetMouseButton(0))
        {
            controller.Attack();
        }

        if (moveY > 0)
        {
            currentMove.y = 1;
        }
        else if (moveY < 0)
        {
            currentMove.y = -1;
        }

        if (moveX > 0)
        {
            currentMove.x = 1;
        }
        else if (moveX < 0)
        {
            currentMove.x = -1;
        }

        if (currentMove.y != 0 && currentMove.x != 0)
        {
            currentMove.y /= Mathf.Sqrt(2);
            currentMove.x /= Mathf.Sqrt(2);
        }
    }