項目中用的,其實就是不斷的做判斷。
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.