项目中用的,其实就是不断的做判断。
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
/// <summary>
/// 震动屏幕
/// </summary>
public class GameShake : MonoBehaviour {
//振幅(震动大小),频率(震动速度),次数(震动次数),方向(上下),增幅(每次震动时长+-)
float swing; float hz; int num; bool isUp; float rate;
int startNum = 0;
enum state { start,just,lose,end};//震动状态
state myState = state.start;
bool isEnd = false;
public void Born(float _swing, float _hz, int _num, bool _isUp, float _rate)
{
swing = _swing; hz = _hz;num = _num;isUp = _isUp;rate = _rate;
}
// Update is called once per frame
void Update () {
if (isEnd) return;
Shake();
}
void Shake()
{
if (!isUp)
{
switch (myState)
{
case state.start: if (Move(true) >= swing) myState = state.just; break;
case state.just: if (Move(false) <= -swing) myState = state.