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); } } }
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(); }
private void Awake() { if (PlayerCharacteristics.GetValue(PowerShape.Type.WATTER_WALK)) // player water perks { Physics2D.IgnoreCollision(GetComponent <BoxCollider2D>(), GameObject.FindGameObjectWithTag("Player").GetComponent <CircleCollider2D>()); } }
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); } } }
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 }
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"); } } }
public bool CanBePlacedOnInventory() { foreach (Type item in Dependencies) { if (!PlayerCharacteristics.GetValue(item)) { return(false); } } return(true); }
public override void Attack() { if (canAttack) { if (PlayerCharacteristics.GetValue(PowerShape.Type.FIRE_BALL)) { FireballAttack(); } if (PlayerCharacteristics.GetValue(PowerShape.Type.ICE_BALL)) { IceBallAttack(); } StartCoroutine(AttackCooldown()); } }
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); } }
// 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>()); }
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); } }