我们在Unity 2D教程 相机系统(上)中为大家介绍了如何实现2D相机的基本功能,包括目标跟踪、相机偏移、平滑移动、锁定轴以防止眩晕及相机路径系统等。本文将教大家实现一些常见的相机特效,如相机缩放、屏幕抖动及淡入淡出与重叠效果。

相机缩放

相机缩放可以由玩家输入触发,也可以在锁定POI节点或关卡中关键区域时作为相机动画。

可以调整相机的orthographicSize来实现Unity 3D 中的2D相机缩放效果。将下面的脚本添加到相机上,然后使用SetZoom函数修改缩放比例来达到需要的效果。1代表无缩放,0.5代表两倍放大,而2代表两倍缩小,以此类推。

[C#] 纯文本查看 复制代码float zoomFactor = 1.0f; float zoomSpeed = 5.0f; private float originalSize = 0f; private Camera thisCamera; // Use this for initialization void Start() { thisCamera = GetComponent<Camera>(); originalSize = thisCamera.orthographicSize; } // Update is called once per frame void Update() { float targetSize = originalSize * zoomFactor; if (targetSize != thisCamera.orthographicSize) { thisCamera.orthographicSize = Mathf.Lerp(thisCamera.orthographicSize, targetSize, Time.deltaTime * zoomSpeed); } } void SetZoom(float zoomFactor) { this.zoomFactor = zoomFactor; }
屏幕抖动
如果我们想在游戏中实现地震、爆炸或任何效果,最好能有个方便的相机抖动效果。

094437fd2qu4281l33ft21.png
为了实现淡入效果,修改Overlay脚本,添加一个到目标颜色的插值功能,例如下面的脚本。将面板的初始颜色设置为黑色(或白色),然后将目标颜色设定为叠层最终的颜色。你可以根据需要更改fadeSpeed的值,这里推荐0.8。fadeSpeed是基于时间的。1.0代表过渡过程会持续多帧,但保持在1秒钟时间帧之中。0.8代表真实的过渡时间为1/0.8 = 1.25秒。
[C#] 纯文本查看 复制代码public class Overlay : MonoBehaviour { #region Fields [SerializeField] Image overlay; [SerializeField] float fadeSpeed = 5f; [SerializeField] Color targetColor; #endregion void Update() { if (overlay.color != targetColor) { overlay.color = Color.Lerp(overlay.color, targetColor, Time.deltaTime * fadeSpeed); } } #region Public public void SetOverlayColor(Color color) { targetColor = color; } #endregion }
小结

本文尝试对一些基本模块化组件进行了讲解,并使用它们组成了游戏中的2D相机系统,同时也对设计需求进行了分析。自然地,一般游戏都有自己的特殊需求,但有了这里讲述的基本追踪概念和简易效果,就可以在此基础上走得更远,甚至构思出独有的效果。之后也可以将它们打包成为Unity 3D资源包,在项目中继续使用。

相机系统在游戏中扮演着重要的角色,它可以向玩家传达正确的游戏氛围。这里的一个类比是电影。想象各种不同类型的经典电影,相机和胶片本身就为场景带来了如此多的可能性,甚至使它们最终上升到了艺术的境界。因此无论什么游戏项目,首先就必须有一个优秀的相机系统。

原文链接:Mastering 2D Cameras in Unity: A Tutorial for Game Developers
原文作者: Mihai Cozma
感谢Unity官方翻译组成员“巴鲍伯”“E.A.S”对本文翻译所做的贡献。
转载请注明来源:Unity官方中文社区 (forum.china.unity3d.com)。请勿私自更改任何版权说明信息。 Unity, 相机, 教程 2D锐亚教育

锐亚教育 锐亚科技 unity unity教程