Unity3D ——游戏开炮,开枪屏幕震动效果实现
RPG或者动作游戏最重要的就是打击感,好的打击效果可以给游戏增色不少,而一种最方便最简单的提升打击感的效果就是震屏效果,短短几十行代码就可以让我们的游戏效果提升不少。
那么在我们进行游戏战斗场景开发时,常常为了加强临场感,会在有爆炸或者撞击的时候加入震屏的效果,原理其实很简单,就是对场景主相机进行坐标和角度的变化。
话不多说,看一下代码:
// 相机震动效果
using UnityEngine;public class CameraShakeEffect : MonoBehaviour
{
/// <summary>
/// 相机震动方向
/// </summary>
public Vector3 shakeDir = Vector3.one;
/// <summary>
/// 相机震动时间
/// </summary>
public float shakeTime = 1.0f; private float currentTime = 0.0f;
private float totalTime = 0.0f;public void Trigger()
{totalTime = shakeTime;currentTime = shakeTime;
}public void Stop()
{currentTime = 0.0f;totalTime = 0.0f;
}public void UpdateShake()
{if (currentTime > 0.0f && totalTime > 0.0f){float percent = currentTime / totalTime;Vector3 shakePos = Vector3.zero;shakePos.x = UnityEngine.Random.Range(-Mathf.Abs(shakeDir.x) * percent, Mathf.Abs(shakeDir.x) * percent);shakePos.y = UnityEngine.Random.Range(-Mathf.Abs(shakeDir.y) * percent, Mathf.Abs(shakeDir.y) * percent);shakePos.z = UnityEngine.Random.Range(-Mathf.Abs(shakeDir.z) * percent, Mathf.Abs(shakeDir.z) * percent);Camera.main.transform.position += shakePos;currentTime -= Time.deltaTime;}else{currentTime = 0.0f;totalTime = 0.0f;}
}void LateUpdate()
{UpdateShake();
}void OnEnable()
{Trigger();
}}
接下来咱们看一下设计思路:
1.创建类,带参数构造方法:
2.获得相机的起始位置,方便震动结束之后恢复相机状态:
3.相机震动操作:
这里我直接通过while循环来实现了,当然在MonoBehavior中也可以在Update方法中实现这样的操作,这里为了封装,所以抽离了一些MonoBehavior的特性。
4.震动结束后恢复相机参数:
Unity3D ——游戏开炮,开枪屏幕震动效果实现相关推荐
- Unity3D游戏开发之仿仙剑奇侠传角色控制效果
在上一篇文章中,我们从Unity3D为我们提供的相机原型实现了非编码式的小地图,如果结合GUI在这个小地图下面绘制一些背景贴图,相信整体的效果会更好一些.博主希望这个问题大家能够自己去做更深入的研究, ...
- [Unity3D]Unity3D游戏开发之仿仙剑奇侠传角色死亡效果实现
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是blog.csdn.net/qinyuanpei. 感谢对我的支持,在上一篇文章< [Unity3D]Unity3D游戏开发之仿仙剑奇侠传 ...
- [Unity3D]Unity3D游戏开发之异步记载场景并实现进度条读取效果
大家好,我是秦元培,欢迎大家关注我的博客,我的博客地址是:blog.csdn.net/qinyuanpei.终于在各种无语的论文作业中解脱了,所以马上抓紧时间来这里更新博客.博主本来计划在Unity3 ...
- 《学Unity的猫》——第十八集:Unity3D游戏开发工程师笔试刷题,皮皮收到面试邀请
文章目录 18.1 皮皮收到面试邀请 18.2 面试题库相关网站 18.2.1 牛客网 18.2.2 领扣LintCode 18.2.3 力扣LeetCode 18.3 优质学习网站 18.3.1 菜 ...
- Unity3D 游戏引擎之脚本实现模型的平移与旋转(六)
Unity3D 游戏引擎之脚本实现模型的平移与旋转 雨松MOMO原创文章如转载,请注明:转载至我的独立域名博客雨松MOMO程序研究院,原文地址:http://www.xuanyusong.com/ar ...
- unity3d 剧情制作_游戏设计作品集干货:跨专业如何入门 Unity3D 游戏引擎?
游戏设计作品集,涉及游戏策划与玩法.游戏美术与Unity3D游戏引擎等内容的学习. 之前克瑞斯介绍过了游戏策划与游戏美术,本期再详细聊下什么是Unity3D游戏引擎,以及学习Unity3D游戏引擎的详 ...
- Unity3D游戏开发之仿仙剑奇侠传一2D游戏 (一)
今天要和大家分享的是基于Unity3D开发2D游戏,博主一直钟爱于国产武侠RPG,这个我在开始写Unity3D游戏开发系列文章的时候就已经说过了,所以我们今天要做的就是利用Unity3D来实现在2D游 ...
- Unity3D游戏开发之邂逅Unity3D
从今天起,博主决定要在毕业前把大学里想学的东西都学完.所以,从今天起,大家将看到由我为大家带来的Unity3D系列文章,让我们一起来学习Unity3D游戏开发吧! 在正式今天的文章之前,博主想简单介绍 ...
- Unity3D游戏开发-宣雨松读书摘要(2015-4-17 18:36)
本书基于Unity3.5编写,通过丰富的游戏实例,以JavaScript与C#两种语言介绍Unity开发. Unity3D游戏开发-宣雨松 序 它支持JavaScript.C#.Boo三种脚本语言 ...
最新文章
- 【廖雪峰python入门笔记】dict
- 用Enterprise Architect从源码自动生成类图
- 从Java到Kotlin(五)
- RabbitMQ入门-Routing直连模式
- Cocoa原理指南-学习和实践1
- oracle语句within,oracle中within group的用法
- 绵阳市公文写作和计算机应用,【绵阳】绵阳市事业单位公开招聘工作人员公文写作和计算机应用笔试和复习大纲...
- 数据结构—线性表及其实现方式
- excel函数修改服务器端数据,勤哲Excel服务器表达式函数详解
- miui android mmi,小米5miui9稳定版自改官包方法
- springboot旅游景区景点购票系统毕业设计毕设作品开题报告开题答辩PPT
- 获取本机的ip地址(Windows和linux的区别)
- 计算机硬盘损坏 数据如何修复,硬盘坏了怎么修复 教你如何修复硬盘坏道
- 蓝桥杯单片机——PWM脉宽调制(10)
- mybatis 通配符
- 基于Arduino的智能泡茶机(1)——机械系机械创新比赛总结技术点与不足处
- 计算机软考中级能评职称吗,软考中级是中级职称么?考此证后可以办理落户么?...
- TCP/IP详解(二)数据链路层
- 初探视频原理和FFmpeg
- JS盒子点击时跟随鼠标移动