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

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

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

 

 

你可能感兴趣的:(屏幕)