| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162 |
- using Sirenix.OdinInspector;
- using System.Collections.Generic;
- using UnityEngine;
- public enum ScreenReflectEffects
- {
- screenShake = 0, //ÆÁÄ»Õð¶¯
- freezeFrame = 1, //¶ÙÖ¡
- stun = 2, //Ó²Ö±
- }
- public class ScreenReflectPresets : MonoBehaviour
- {
- [System.Serializable]
- public struct ScreenReflects
- {
- public ScreenReflectEffects effect;
- [ShowIf("effect", ScreenReflectEffects.screenShake)]
- public int level;
- [ShowIf("effect", ScreenReflectEffects.freezeFrame)]
- public int frame;
- [ShowIf("effect", ScreenReflectEffects.stun)]
- public float time;
- }
- [System.Serializable]
- public struct ScreenReflectInfo
- {
- public int minX;
- public List<ScreenReflects> effects;
- }
- public ScreenShake screenShake;
- public List<ScreenReflectInfo> reflectPresets;
- public void ScreenReflect(BeHitTrigger beHitter, int x)
- {
- foreach(ScreenReflectInfo sri in reflectPresets)
- {
- if (x >= sri.minX)
- {
- foreach(ScreenReflects sr in sri.effects)
- {
- switch (sr.effect)
- {
- case ScreenReflectEffects.screenShake:
- screenShake.ShakeScreen(sr.level);
- break;
- case ScreenReflectEffects.freezeFrame:
- beHitter.FreezeFrame(sr.frame);
- break;
- case ScreenReflectEffects.stun:
- //Ó²Ö±
- break;
- }
- }
- break;
- }
- }
- }
- }
|