unity 射击时屏幕震动效果

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);

  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值