CliffHurt.cs 1.3 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859
  1. using System;
  2. using System.Collections;
  3. using UnityEngine;
  4. [RequireComponent(typeof(BoxCollider2D))]
  5. public class CliffHurt : MonoBehaviour
  6. {
  7. private void OnTriggerEnter2D(Collider2D other)
  8. {
  9. if (other.CompareTag("Player"))
  10. {
  11. base.StartCoroutine(this.PlayerReset());
  12. }
  13. }
  14. private IEnumerator PlayerReset()
  15. {
  16. yield return new WaitForSeconds(this.delayTime);
  17. PlayerAttribute pAttr = R.Player.Attribute;
  18. CliffHurt.DamgeType damgeType = this.damageType;
  19. if (damgeType != CliffHurt.DamgeType.Constant)
  20. {
  21. if (damgeType == CliffHurt.DamgeType.Percent)
  22. {
  23. pAttr.currentHP -= (int)((float)(pAttr.maxHP * this.percent) / 100f);
  24. }
  25. }
  26. else
  27. {
  28. pAttr.currentHP -= this.damage;
  29. }
  30. if (!pAttr.isDead)
  31. {
  32. R.Player.GetComponent<Rigidbody2D>().gravityScale = 0f;
  33. R.Player.Action.ChangeState(PlayerAction.StateEnum.UnderAtk1, 1f);
  34. yield return new WaitForSeconds(0.2f);
  35. R.Player.Transform.position = Cliff.RebornPoint.position + Vector3.up * 3f;
  36. }
  37. yield break;
  38. }
  39. [SerializeField]
  40. private CliffHurt.DamgeType damageType;
  41. [SerializeField]
  42. private float delayTime;
  43. [SerializeField]
  44. private int damage;
  45. [SerializeField]
  46. private int percent;
  47. public enum DamgeType
  48. {
  49. Constant,
  50. Percent
  51. }
  52. }