Unity3D动作类游戏中两种相机抖动

在动作类RPG游戏中,为了体现角色的技能和增加动作打击感,我们常常会给相机添加抖动效果来配合特效做一些技能效果。
我在网上搜了一下,然后结合自己的项目总结一下,大概分两种抖动,

按次数抖动

按次数抖动,就是让相机抖动固定的次数。但在实际项目中,我们为了防止抖动效果过于生硬,一般会给一个次数的范围,然后随机生成抖动的次数,这样玩家在玩的时候就不会感觉很重复。

using UnityEngine;
using System.Collections;public class ShakeCamera : MonoBehaviour {public Camera curCamera;bool isCanShake = false;int shakeCount = 0;
Vector3 mCurPos;//相机的初始位置
float radio = 0.2f;// Use this for initialization
void Start () {//ShakeCameraWithCount ();
}// Update is called once per frame
void Update () {if(isCanShake){}ShakeWithCount();
}void OnGUI()
{if(GUI.Button(new Rect(0,0,100,40),"ShakeWithCount")){ShakeCameraWithCount();}
}public void ShakeCameraWithCount()
{mCurPos = curCamera.transform.position;shakeCount = Random.Range (5,14);
}void ShakeWithCount()
{if(shakeCount>0){shakeCount--;float r = Random.Range(-radio,radio);//随机的震动幅度if(shakeCount == 0){//保证最终回归到原始位置curCamera.transform.position = mCurPos;}else{curCamera.transform.position = mCurPos + Vector3.one*r;}}
}
}

按时间抖动

按时间抖动,顾名思义就是让相机在给定时间内一直持续做抖动效果。按时间抖动不仅可以用作技能效果,而且可以用来模拟地震,巨石落下等自然效果,这样既可以节省美工的工作量,又能节省资源,而且效果还很真实。
全部代码就不发了,只发一部分核心代码:

void ShakeCamera_Time()
{if (shakeTime > 0){mainCamera.transform.position = mCurPos + Random.insideUnitSphere * radio;shakeTime -= Time.deltaTime * deFactor;}else {shakeTime = 0;//mainCamera.transform.position = mCurPos;}
}

只要放在Update里执行,然后从外部传入震动的时间就可以看到效果啦!

如果有更好的方法欢迎补充(⊙o⊙)嗯!

分享到

Unity3D动作类游戏中两种相机抖动相关推荐

  1. unity3d软阴影和硬阴影的原理_Unity3D中两种默认阴影的实现

    Unity3D中两种阴影的实现 传统的ShadowMap ShadowMap说起来十分简单,把摄像机和光源的位置重叠,那么场景中该光源的阴影区域就是那些摄像机看不到的地方,主要应用在前向渲染路径中. ...

  2. 用Direct3D设计二维横版过关动作类游戏的角色运动(双倍速、二段跳)

    用Direct3D设计二维横版过关动作类游戏的角色运动 演示程序下载地址:http://download.csdn.net/detail/jiangcaiyang123/4278008 虽然大家使用D ...

  3. 一、创建Assetbundle 在unity3d开发的游戏中,无论模型,音频,还是图片等,我们都做成Prefab,然后打包成Assetbundle,方便我们后面的使用,来达到资源的更新。

    一.创建Assetbundle 在unity3d开发的游戏中,无论模型,音频,还是图片等,我们都做成Prefab,然后打包成Assetbundle,方便我们后面的使用,来达到资源的更新. 一个Asse ...

  4. 手机横版动作类游戏的开发思路

    转自:当乐网 原文:http://www.d.cn/news/289.html 说起横版动作类游戏,对我们这代人影响最深的作品,应该是日本80.90年代出品的一批街机游戏,像<双截龙>.& ...

  5. matlab 遍历每个像素点,Mat中两种像素遍历方法比较

    小白,入门中,不足其指正.刚刚接触opencv,从一个Matlab风格的编程环境突然跳转到C++,实在有些不适.单就pixels scanning花了好长时间研究.opencv-tutorials给出 ...

  6. 棋盘类游戏中的栅格地形渲染

    棋盘类游戏中的栅格地形渲染 张嘉华 梁成 李桂清 (华南理工大学计算机科学与工程学院 广东 广州 510640) 摘要:本文提出了适合战棋类游戏的三维栅格地形渲染策略,把Catmull-Clark细分 ...

  7. 函数指针--Nginx和Redis中两种回调函数写法

    1.Nginx和Redis中两种回调函数写法 #include <stdio.h>//仿Nginx风格 //结构外声明函数指针类型 typedef void (*ngx_connectio ...

  8. spring mvc中两种异常的处理手法

    spring mvc中两种异常的处理手法 在spring mvc中,对异常的处理,可以小结有如下两类写法: 1 <bean id="exceptionResolver" cl ...

  9. 通过反射创建新类示例的两种方式及比较

    通过反射创建新类示例的两种方式及比较 作者BLOG:http://blog.csdn.net/fenglibing 通过反射创建新的类示例,有两种方式: Class.newInstance() Con ...

最新文章

  1. CondLaneNet | 使用动态卷积核预测每个车道线实例
  2. 企业千人千面管理模式_华世界集团获国家高新技术企业认定
  3. 贪心+优先队列之更改优先级-hdu1896
  4. HALCON: texture_laws用法解析
  5. uniapp微信小程序获取位置(高德SDK)
  6. 5 月编程语言排行榜:Java第一,R 跌出Top20,Python成最大赢家
  7. Javascript:闭包、面向对象、构造函数
  8. 利用分类模型学习特征权重
  9. [2018.10.23 T3] 新的家园
  10. Microsoft SQL Server 自定义函数整理大全
  11. matlab 输出一行字,MATLAB输出结果的格式设置
  12. 快来试试这几个照片拼图软件,效果很不错
  13. python给一列数据增加前缀_为Datafram的特定列添加前缀
  14. PHP动态网站开发期末试卷,《PHP动态网站开发实例教程》课程考核方案
  15. girlfriend 生气心情不好怎么解决?
  16. pl/sql插入语句插入数据库中文为????
  17. 集五福招数都在这了,2021 支付宝集五福全攻略
  18. 3t硬盘分区 Linux win,3TB使用大难题 得先学会怎么分区_内存硬盘行情-中关村在线...
  19. CSDN KaTeX 公式之等号对齐
  20. 廊坊知恩:抖音店铺怎么运营

热门文章

  1. 0019-python学习笔记:竞技模型
  2. 百度地图绘制行驶轨迹、折线上添加箭头、修改地图底色
  3. Foundation5(十五)
  4. ifstream 中 getline读文件三种方式
  5. 双活解决方案如何部署“应用”双活?
  6. 网站建设要怎么选择域名?有哪些小技巧?
  7. 世界国家及中国各省市级地图ArcGIS MXD/SHP/QGIS/JSON/SQL数据文件【免费下载】
  8. 小青蛙oracle跟踪,在小青蛙TOAD中用oracle语句写
  9. EMC风险分析-电缆屏蔽(CS)分析
  10. hibernate QBC和QBE精讲与案列分析(下)