Exemplo n.º 1
0
        private void DetectHit(Player player, int damage)
        {
            var playerPosition = new Vector2(player.transform.position.x, player.transform.position.y);
            var direction      = player.IsFacingLeft()
                ? new Vector2(-1, 0) // left
                : new Vector2(1, 0); // right
            var yOffset    = 2f;
            var xOffset    = 0f;
            var tempOffset = player.IsFacingLeft()
                ? new Vector2(-xOffset, yOffset)
                : new Vector2(xOffset, yOffset);

            Debug.DrawRay(playerPosition + tempOffset, direction * attackDistance, Color.red, 3);
            RaycastHit2D[] rayCasts = Physics2D.RaycastAll(playerPosition + tempOffset, direction, attackDistance, playerLayerMask);
            foreach (var hit2D in rayCasts)
            {
                Player            target  = hit2D.collider.GetComponent <Player>();
                BoulderController boulder = hit2D.collider.GetComponentInParent <BoulderController>();
                if (target != null)
                {
                    if (target == player)
                    {
                        continue;
                    }
                    if (target.combatState == Player.CombatState.Blocking &&
                        Player.IsOpponentFacingPlayer(player, target))
                    {
                        // successful block
                        target.SuccessfulBlock();
                        target.KnockBack(opponentKnockBackDistance);
                        player.KnockBack(selfKnockBackDistance);
                    }
                    else if (target.combatState == Player.CombatState.Rolling)
                    {
                        // successful roll, play sound effect
                    }
                    else if (target.combatState == Player.CombatState.Dead)
                    {
                    }
                    else
                    {
                        // add sfx
                        AudioController.instance.PlaySoundEffect("Slash");
                        target.TakeDamage(damage);
                    }
                }

                if (boulder != null)
                {
                    Debug.Log("Hit");
                    var boulderProjectile = boulder.GetComponentInChildren <BoulderProjectileController>();
                    boulderProjectile.Impact();
                }
            }
            combo.UpdateCombo();
        }
Exemplo n.º 2
0
    public void CreateBoulder()
    {
        //create a new boulder prefab on top of this tile
        string toLoad = boulderPrefab + boulderPrefabChoice;

        //select random prefab
        GameObject newBoulder = (GameObject)Instantiate(Resources.Load(prefabsPath + toLoad),
                                                        new Vector3(transform.position.x, transform.position.y, 0.0f), transform.rotation); //instantiate new boulder

        //establish the two way references
        tileBoulder = newBoulder.GetComponent <BoulderController>();
        tileBoulder.tileBoulderIsOn = this.gameObject.GetComponent <TileController>();

        newBoulder.GetComponent <BoulderController> ().randomElementFactor = randomFactor;

        //boulder handles it's own destruction
    }