在Unity中实现相机抖动效果
发表于2019-01-09
游戏好不好玩,跟游戏设计的用不用心有关系,比如说想让游戏的真实感更强烈,开发人员通常会为游戏添加一些屏幕抖动效果。下面简单介绍几种实现相机抖动的方式:
1、通过脚本
相机抖动实现:
using UnityEngine; using System.Collections; public class CameraShake : MonoBehaviour { public IEnumerator Shake(float duration, float magnitude) { Vector3 orignalPosition = transform.position; float elapsed = 0f; while (elapsed < duration) { float x = Random.Range(-1f, 1f) * magnitude; float y = Random.Range(-1f, 1f) * magnitude; transform.position = new Vector3(x, y, -10f); elapsed += Time.deltaTime; yield return 0; } transform.position = orignalPosition; } }
调用实现:
using UnityEngine; using System.Collections; public class ExplodeStar : MonoBehaviour { public ParticleSystem explodePartical; public CameraShake cameraShake; void Update() { if (Input.GetKeyDown(KeyCode.E)) { explodePartical.Play(); StartCoroutine(cameraShake.Shake(0.15f, 0.4f)); } } }
2、使用动画
使用Animator分别创建闲置动画和抖动动画。使用动画控制相机抖动。
3、使用插件
- 极力推荐Free插件 EZ Camera Shake
- 类似的DoTween,ITween,插件
- 一个关于相机的插件Cinemachine