相机振动效果(打击屏幕振动)

实现相机振动的代码如下:

using UnityEngine;
using System.Collections;

public class CameraShake : MonoBehaviour {

    Matrix4x4 originalProjection;
    float timer;

    void Start()
    {
        originalProjection = camera.projectionMatrix;
    }

    public IEnumerator Shake(float gap)
    {
        timer = Time.time;
        while (Time.time - timer <= gap)
        {
            Matrix4x4 p = originalProjection;
            p.m01 += Mathf.Sin(Time.time * 120F) * 0.04F;
            p.m10 += Mathf.Sin(Time.time * 150F) * 0.04F;
            camera.projectionMatrix = p;
            yield return 0;
        }
        camera.ResetProjectionMatrix();
    }
}

把该脚本绑定在相机后,通过一个事件调用CameraShake的Shake函数,如:

    void OnTriggerEnter(Collider other)
  {
     if (other.name == "Cube")
     {          
    StartCoroutine(Camera.main.GetComponent
<CameraShake>().Shake(speed)); } }

 

 

posted @ 2013-09-09 11:44  martianzone  阅读(391)  评论(0编辑  收藏  举报