基于Unity3D的相机震动效果的实现

在游戏中,经常会用到相机震动功能,例如赛车游戏。现在我们来实现一个简单的相机震动功能。

代码如下:挂载在任意游戏对象上即可。

 
 
using UnityEngine ;
using System.Collections ;

public class CameraShake : MonoBehaviour
{
//抖动的物体
public Transform shakeTransform ;
//抖动的频率
public float shakeTime = 0.002f ;

//抖动的计时器
private float shakeTimer ;
//记录抖动前的位置
private Vector3 currentPosition ;
//设置抖动次数
private int shakeCount = - 1 ;
void Start ()
{
//若为空,则默认相机抖动
if ( shakeTransform == null )
shakeTransform = Camera . main . transform ;
//记录抖动前的位置
currentPosition = shakeTransform . position ;
//设置抖动次数
shakeCount = Random . Range ( 50 , 60 );
}
void Update ()
{
shakeTimer += Time . deltaTime ;
if ( shakeTimer > shakeTime && shakeCount > 0 )
{
shakeCount --;
float shakeDelta = Random . Range (- 0.01f , 0.01f );
//抖动最后一次时设置为都动前记录的位置
if ( shakeCount == 1 )
shakeDelta = 0 ;
shakeTimer = 0 ;
shakeTransform . position = currentPosition + Vector3 . one * shakeDelta ;
}
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值