在游戏中,经常会用到相机震动功能,例如赛车游戏。现在我们来实现一个简单的相机震动功能。
代码如下:挂载在任意游戏对象上即可。
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 ;}}}