Unity3D —— 爆炸交互(震屏效果)
来源:互联网 发布:函数筛选出不重复数据 编辑:程序博客网 时间:2024/06/03 11:18
前言:
在我们进行游戏战斗场景开发时,常常为了加强临场感,会在有爆炸或者撞击的时候加入震屏的效果,原理其实很简单,就是对场景主相机进行坐标和角度的变化。
设计
在开始进行代码实操之前,我们先考虑一下大致的思路,主要操作的参数有震动的幅度(Transform的各项参数,通常只改变localPosition和localRotation,必要的时候也可以操作localScale),还有震动的时间,假设无需规则震动,可以考虑通过在振幅范围内取随机数的方法来实现。
实现:
1.创建类,带参数构造方法:
/// <summary> /// 创建振动器 /// </summary> /// <param name="timer">震动时间</param> /// <param name="force">震动幅度</param> /// <param name="delay">延迟多久震动</param> public CameraShaker(float timer, float force,float delay = 0){ Timer = timer; Force = force; delayTime = delay; Reset(); }
Rest()
方法是用来恢复一些状态和数据信息,以便于通过CameraShaker
类创建单个振动器可以反复使用。
2.获得相机的起始位置,方便震动结束之后恢复相机状态:
m_initialPosition = Camera.main.transform.position; m_initialRotation = Camera.main.transform.localRotation;
3.相机震动操作:
这里我直接通过while循环来实现了,当然在MonoBehavior中也可以在Update方法中实现这样的操作,这里为了封装,所以抽离了一些MonoBehavior的特性。
while (duration > 0) { Transform objectToMove = Camera.main.transform; Vector3 newOffset = new Vector3(UnityEngine.Random.Range(-Force, Force),UnityEngine.Random.Range(-Force, Force),0); float newRotationOffset = UnityEngine.Random.Range(-RotationAngle, RotationAngle); objectToMove.position = objectToMove.position - m_oldOffset + newOffset; objectToMove.Rotate(0, 0, -m_oldRotationOffset); objectToMove.Rotate(0, 0, newRotationOffset); m_oldOffset = newOffset; m_oldRotationOffset = newRotationOffset; duration -= Time.deltaTime; }
duration
为震动时长,而Force
为震动的幅度。
4.震动结束后恢复相机参数:
Camera.main.transform.position = m_initialPosition; Camera.main.transform.localRotation = m_initialRotation;
0 0
- Unity3D —— 爆炸交互(震屏效果)
- Unity3D学习记录——爆炸特效
- Unity3D学习笔记08:爆炸效果
- Unity3D 实现爆炸效果的函数
- 烟花爆炸色彩效果—ExplosionField
- PS爆炸效果(下)
- Unity3D 粒子系统实现一个简单的爆炸效果
- 基于C#弹幕类射击游戏的实现——(六)爆炸效果
- 制作爆炸效果
- 图片爆炸效果
- PS制作爆炸效果
- Box2d实现爆炸效果
- 爆炸的效果(IOS)
- miui卸载爆炸效果
- 飞机爆炸效果
- View粒子爆炸效果
- 六、爆炸效果的产生及销毁(雷霆战机)
- Unity3d 相机震动 震屏效果
- H5缓存-Manifes
- 数据库MySql类库系列(一)-DBOperator
- 漫谈SOA(面向服务架构)
- FlexboxLayout
- VMware 安装mac方法整理
- Unity3D —— 爆炸交互(震屏效果)
- iOS超全开源框架、项目和学习资料汇总--数据库、缓存处理、图像浏览、摄像照相视频音频篇
- 黑马6-10月JAVAEE+Hadoop大数据第10期
- 简单工厂模式
- 文本指纹算法和系统简述
- 硬件编解码(八)其他资料的搜集
- 如何查看和修改操作系统字符集
- 关于Unity记录
- 练习系统 实验三 大整数加法