コード例 #1
0
    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();
            }
        }
    }
コード例 #2
0
    public void AddPowerup(ShieldPowerUp powerUp)
    {
        Transform trans = powerUp.transform;

        powerUp.SetUp();
        trans.SetParent(freeSpace);
        trans.localPosition = Vector2.zero;
    }
コード例 #3
0
    // 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;
    }
コード例 #4
0
    private void OnPowerUpCollected(Message message)
    {
        ShieldPowerUp powerUp = (ShieldPowerUp)message.Data;

        if (powerUp == null)
        {
            return;
        }
        Activate();
    }
コード例 #5
0
    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;
            }
        }
    }
コード例 #6
0
    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;
    }
コード例 #7
0
    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);
        }
    }