您的位置:首页 > 移动开发 > Unity3D

unity 射击时屏幕震动效果

2016-11-11 11:28 399 查看
using UnityEngine;
using System.Collections;

public class CameraShake : MonoBehaviour {

public static bool startShake = false;  //camera是否开始震动
public static float seconds  = 0f;    //震动持续秒数
public static bool started  = false;    //是否已经开始震动
public static float quake = 0.2f;       //震动系数

private Vector3 camPOS;  //camera的起始位置

// Use this for initialization
void Start ()
{
camPOS = transform.localPosition;
}

// Update is called once per frame
void LateUpdate ()
{
if(startShake)
{
transform.localPosition =camPOS+ Random.insideUnitSphere * quake;
}

if(started)
{
StartCoroutine(WaitForSecond(seconds));
started = false;
}
}
/// <summary>
/// 外部调用控制camera震动
/// </summary>
/// <param name="a">震动时间</param>
/// <param name="b">震动幅度</param>
public static void ShakeFor(float a ,float b)
{
//		if (startShake)
//			return;
seconds = a;
started = true;
startShake = true;
quake = b;
}
IEnumerator WaitForSecond(float a)
{
//		camPOS = transform.position;

yield return new WaitForSeconds (a);
startShake = false;
transform.localPosition = camPOS;
}

}
在需要震动的时候直接调用
CameraShake.ShakeFor (0.2f, 0.1f);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  unity3d