Пример #1
0
    public override void Interact(MoveableObject controller)
    {
        if (!canInteract)
        {
            return;
        }

        // Instead of doing it the proper way, just use GetComponent to save time
        PlayerController playerController = controller.GetComponent <PlayerController>();

        Debug.Log("Deal damage interactable");
        if (playerController != null)
        {
            float knockback = 0;
            if (pushBack)
            {
                knockback = playerController.swordSwing.knockback;
            }

            Debug.Log("Deal damage interactable 2");
            double enemyToPlayerDamage = this.enemyController.playerStats.GetScaledStat(Stat.ATTACK, this.enemyController.reference);
            playerController.DealDamageToMe(enemyToPlayerDamage, knockback);


            double playerToEnemyDamage = playerController.swordSwing.GetSwordDamage() / 5.0;
            this.enemyController.hittableObject.ManualGetHit(playerToEnemyDamage, knockback);
        }
    }
Пример #2
0
 private void OnTriggerEnter(Collider col)
 {
     if (col.GetComponent <MoveableObject>() != null)
     {
         MoveableObject hitObject = col.GetComponent <MoveableObject>();
         hitObject.ResetState();
         hitObject.GetComponent <Rigidbody>().velocity = Vector3.zero;
     }
 }
Пример #3
0
    private IEnumerator movePlayerBackToPosition(MoveableObject player, List <Transform> otherObjects, bool disableCollider)
    {
        if (disableCollider)
        {
            player.GetComponent <PlayerController>().canMove    = false;
            player.GetComponent <CharacterController>().enabled = false;
        }

        float target = this.playerDefaultPosition.position.x;

        float lerpTime    = 1f;
        float lerpCounter = 0;
        float start       = player.transform.position.x;
        float end         = target;

        float startY = player.transform.position.y;
        float endY   = this.playerDefaultPosition.position.y;

        while (lerpCounter < lerpTime)
        {
            float t = lerpCounter / lerpTime;
            float x = Mathf.Lerp(start, end, t);
            float y = player.transform.position.y;

            if (disableCollider)
            {
                y = Mathf.Lerp(startY, endY, t);
            }

            player.transform.position = new Vector3(x, y, player.transform.position.z);

            yield return(null);

            lerpCounter += Time.deltaTime;
        }

        player.transform.position = new Vector3(target, player.transform.position.y, player.transform.position.z);

        if (disableCollider)
        {
            player.GetComponent <PlayerController>().canMove    = true;
            player.GetComponent <CharacterController>().enabled = true;
        }
    }
Пример #4
0
    public override void Interact(MoveableObject controller)
    {
        if (!canInteract)
        {
            return;
        }

        // Instead of doing it the proper way, just use GetComponent to save time
        PlayerController playerController = controller.GetComponent <PlayerController>();

        if (playerController != null)
        {
            playerController.DealDamageToMe(this.reference * damageMultiplier, 0);
            if (this.disableAfterGettingHit)
            {
                this.canInteract = false;
            }

            this.onHit();
        }
    }