ScreenReflectPresets.cs 1.7 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162
  1. using Sirenix.OdinInspector;
  2. using System.Collections.Generic;
  3. using UnityEngine;
  4. public enum ScreenReflectEffects
  5. {
  6. screenShake = 0, //ÆÁÄ»Õð¶¯
  7. freezeFrame = 1, //¶ÙÖ¡
  8. stun = 2, //Ó²Ö±
  9. }
  10. public class ScreenReflectPresets : MonoBehaviour
  11. {
  12. [System.Serializable]
  13. public struct ScreenReflects
  14. {
  15. public ScreenReflectEffects effect;
  16. [ShowIf("effect", ScreenReflectEffects.screenShake)]
  17. public int level;
  18. [ShowIf("effect", ScreenReflectEffects.freezeFrame)]
  19. public int frame;
  20. [ShowIf("effect", ScreenReflectEffects.stun)]
  21. public float time;
  22. }
  23. [System.Serializable]
  24. public struct ScreenReflectInfo
  25. {
  26. public int minX;
  27. public List<ScreenReflects> effects;
  28. }
  29. public ScreenShake screenShake;
  30. public List<ScreenReflectInfo> reflectPresets;
  31. public void ScreenReflect(BeHitTrigger beHitter, int x)
  32. {
  33. foreach(ScreenReflectInfo sri in reflectPresets)
  34. {
  35. if (x >= sri.minX)
  36. {
  37. foreach(ScreenReflects sr in sri.effects)
  38. {
  39. switch (sr.effect)
  40. {
  41. case ScreenReflectEffects.screenShake:
  42. screenShake.ShakeScreen(sr.level);
  43. break;
  44. case ScreenReflectEffects.freezeFrame:
  45. beHitter.FreezeFrame(sr.frame);
  46. break;
  47. case ScreenReflectEffects.stun:
  48. //Ó²Ö±
  49. break;
  50. }
  51. }
  52. break;
  53. }
  54. }
  55. }
  56. }