BodyTrigger.cs 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. using System.Collections;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. using UnityEngine.Events;
  5. using System;
  6. public class BodyTrigger : MonoBehaviour
  7. {
  8. public PlayerController owner;
  9. public AttackController.AttackMethod attackMethod;
  10. public List<BeHitTrigger> collisionTargets = new List<BeHitTrigger>();
  11. public List<TargetType> targetTypes;
  12. int randomInt;
  13. private void Awake()
  14. {
  15. attackMethod.attackInfo.attackMethod_Type = AttackMethod_Type.Attack_March;
  16. }
  17. private void OnEnable()
  18. {
  19. collisionTargets.Clear();
  20. attackMethod.attackInfo.blowUp.force = GameManager.instance.forceToGround;
  21. attackMethod.attackInfo.blowUp.landingDamageRate = GameManager.instance.landingDamageRate;
  22. }
  23. private void OnTriggerEnter(Collider other)
  24. {
  25. BeHitTrigger hitTrigger = other.GetComponent<BeHitTrigger>();
  26. if (hitTrigger != null && !hitTrigger.owner.isDie)
  27. {
  28. TargetType otherTargetType = (TargetType)Enum.Parse(typeof(TargetType), hitTrigger.owner.tag);
  29. if (!targetTypes.Exists(x => x == otherTargetType))
  30. {
  31. return;
  32. }
  33. MoveCharacter moveCharacter = hitTrigger.owner as MoveCharacter;
  34. if (GameManager.instance.isThunderEnable)
  35. {
  36. randomInt = UnityEngine.Random.Range(0, 100);
  37. if(randomInt < GameManager.instance.thunderProbability)
  38. {
  39. moveCharacter.BeElectrify();
  40. }
  41. }
  42. if (GameManager.instance.isWindEnable && !collisionTargets.Contains(hitTrigger))
  43. {
  44. randomInt = UnityEngine.Random.Range(0, 100);
  45. if (randomInt < GameManager.instance.windProbability)
  46. {
  47. collisionTargets.Add(hitTrigger);
  48. if (!moveCharacter.nowCanFly)
  49. {
  50. attackMethod.attackInfo.blowUp.force = GameManager.instance.forceToGround + GameManager.instance.windLabelEffectRatio * GameManager.instance.myTreasuresTag[1];
  51. moveCharacter.BeHit(attackMethod, owner, -1);
  52. }
  53. else
  54. {
  55. moveCharacter.rb.AddForce(owner.rushDir * (GameManager.instance.forceToFly + GameManager.instance.windLabelEffectRatio * GameManager.instance.myTreasuresTag[1]), ForceMode.Impulse);
  56. }
  57. }
  58. }
  59. }
  60. }
  61. }