private void OnTriggerEnter(Collider other) //when the player starts wallriding, //which means to enter the second box collider of each wall { if (other.tag == "RightWall" || other.tag == "LeftWall") //check if player is wallriding ,no matter which wall { WallRiding = true; if (other.tag == "RightWall") { RightRide = true; } else if (other.tag == "LeftWall") { LeftRide = true; } } if (other.tag == "Spikes" || other.tag == "LongSpikes") //when player enters spikes' trigger collider, trigger DeathState { if (PlayerStates.isShielded) { other.gameObject.SetActive(false); //disable spike so the player will continue descent ShieldPowerUp.ShieldDestroyed(); } else { PlayerStates.DeathState(); } } }
public void AddPowerup(ShieldPowerUp powerUp) { Transform trans = powerUp.transform; powerUp.SetUp(); trans.SetParent(freeSpace); trans.localPosition = Vector2.zero; }
// Use this for initialization void Start() { allPowerUps = new BasePowerUp[2]; GameObject temp = (GameObject)Instantiate(prefabPowerUp, new Vector3(0, 0, 0), Quaternion.identity); ShieldPowerUp tPowerUp = temp.AddComponent <ShieldPowerUp>() as ShieldPowerUp; allPowerUps[0] = tPowerUp; }
private void OnPowerUpCollected(Message message) { ShieldPowerUp powerUp = (ShieldPowerUp)message.Data; if (powerUp == null) { return; } Activate(); }
private void OnCollisionEnter2D(Collision2D collision) { GameObject hitObject = collision.gameObject; EnemyDeath enemy = hitObject.GetComponent <EnemyDeath>(); ShieldPowerUp shield = hitObject.GetComponent <ShieldPowerUp>(); if (hitObject == GameObject.Find("Player")) { PlayerCharacter p = hitObject.GetComponent <PlayerCharacter>(); p.Hurt(); Destroy(this.gameObject); } else if (enemy != null) { EnemyDeath e = hitObject.GetComponent <EnemyDeath>(); e.Die(); Destroy(this.gameObject); FindObjectOfType <PlayerCharacter>().StreakIncrease(); } else if (shield != null && firstWall == false) { Destroy(this.gameObject); } else if (shield != null && firstWall == true) { } else { var speed = lastVelocity.magnitude; //We can reduce this if we want var direction = Vector3.Reflect(lastVelocity.normalized, collision.contacts[0].normal); rb.velocity = (direction * speed) * 0.95f; if (firstWall == true) { FindObjectOfType <PlayerCharacter>().StreakReset(); firstWall = false; } } }
private void HeatDamage() //apply damage points to player when he wallrides while heated up. { if (timesrun3 == 0 || timesrun3 == 1) { timesrun3++; } if (timesrun3 > 1) { if (PlayerStates.isShielded) { ShieldPowerUp.ShieldDestroyed(); //destroy shield after 1.2 seconds, preventing immediate damage } else { DMGpoints++; //player is inflicted one damage per 1.2 seconds PlayerStates.PlayerDamagePoints = DMGpoints; PlayerStates.DamageReceiver(DMGpoints); //method that accepts the damage value that the player received } } timestamp3 = Time.time + DamageInterval; }
private void OnCollisionEnter2D(Collision2D collision) { GameObject hitObject = collision.gameObject; EnemyDeath enemy = hitObject.GetComponent <EnemyDeath>(); Dodgeball dodgeball = hitObject.GetComponent <Dodgeball>(); ShieldPowerUp shield = hitObject.GetComponent <ShieldPowerUp>(); if (hitObject == GameObject.Find("Player")) { PlayerCharacter p = hitObject.GetComponent <PlayerCharacter>(); p.Hurt(); Destroy(this.gameObject); } //I don't know if we want the enemy to be destroyed by its own dodgeballs else if (enemy != null) { //enemy.Die(); Destroy(this.gameObject); } else if (shield != null) { Destroy(this.gameObject); } /* else if (dodgeball != null) * { * var speed = lastVelocity.magnitude; //We can reduce this if we want * var direction = Vector3.Reflect(lastVelocity.normalized, collision.contacts[0].normal); * * rb.velocity = direction * speed; * } *///cool idea but causes ball interaction glitches else { Destroy(this.gameObject); } }