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); } }
private void OnTriggerEnter(Collider col) { if (col.GetComponent <MoveableObject>() != null) { MoveableObject hitObject = col.GetComponent <MoveableObject>(); hitObject.ResetState(); hitObject.GetComponent <Rigidbody>().velocity = Vector3.zero; } }
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; } }
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(); } }