Unity 中实现子弹时间效果
在以前,学习xna游戏框架时,由于xna封装的游戏元素很少,很多功能,只能自己去写一篇;
如:子弹时间效果;
先来介绍一个何为“子弹时间”效果;
这得始源于:著名科幻电影《黑客帝国》中男主角有一幕,敌方子弹扫射中,男主,以超快的速度,对子弹的闪避过程,这一过程,感觉整个世界的时间都变慢了,只是我们观察的人反应没有变慢的感觉---这一过程就是子弹时间;
得知子弹时间的定义后,我们可以知道,游戏多,一些电影,电视,游戏,中的各种摄影效果中,特效中;
都有用到子弹时间的表现方式;
如:
DNF,的BOSS最后致命一击;
孤岛危机 的加速动作;
或是现在有一些2D横版页游,都有制作了子弹时间效果;
那这些效果,在Unity 中,如果实现?
很简单就可以实现:Time.timeScale = .1f; // 就以比正常速度,慢10倍的效果来播放;
这得归功于,Unity 的GameObject对象处理流程;
GameObject中,都有:FixedUpdate,Update两个方法;
前者是以,固定的一个时间频率去调整;
后者,则根据前定的FPS速率有影响关系;
Unity 中需要实时的呈现有效的运算效果,那就得写在:FixedUpdate方法,如:物理运算(Unity自带的钢体,都是在这运算),等;
这样,就算,我们把播放速度,变慢,也不会影响到FixedUpdate实时的更新物理逻辑层的呈现效果;
假如,你有一个2D横版的小DEMO;
你有一个主角,给主角加一个脚本控制;
BulletTime.cs
using UnityEngine;
using System.Collections;public class BulletTime : MonoBehaviour {...float timeScaleDelta = .05f;// Use this for initializationvoid Start () {...}// Update is called once per framevoid Update () {...float spX = Input.GetAxis("Horizontal");float spY = Input.GetAxis("Vertical");// spX, spY 处理上下左右if (Input.GetKeyDown(KeyCode.W)) // 按下W时,把子弹时间加速播放{Time.timeScale += timeScaleDelta;}else if (Input.GetKeyDown(KeyCode.S)) // 按下S时,把子弹时间减速播放{if (Time.timeScale < 0) Time.timeScale = 0;else Time.timeScale -= timeScaleDelta;}}void FixedUpdate(){...}...
}
这样,如果你有控制,主角跳,飞之类的动作,主角在空中时,多按几次:S键,就可以看到,动作变慢了,可以清晰的看到慢动作的:子弹时间效果;
是不是帅呆了;
2D测试资源包:(包有点大,没有去掉其它多余的:NGUI, PlayMaker,都有,还有对一些动画系统的测试)
Jave's Unity Testing Package
下载了资源包,最新一个空项目,再导入,打个:2DCharactorControllerTesting这个场景,
运行,
再按下:上,下,左,右,跳,或移动;
再按下,W,S键调整子弹时间效果;
提示:这个Time.timeScale 的涉及效果范围是,Unity 中,所有,更新与时间相关的都会有影响;
如:GUI,NGUI,或是其它的一些角色动画等;
如果你实现类似,主角,操作不影响(移动,跳,攻击,等其它的一切操作),其它所有,怪物,场景动画(天气,多背景移动层,等)都变慢;
那么就不应该使用Time.timeScale去实现了;
如果要实现这样的效果,首先就要考虑到,对象的更新时间,你是可控的,最好不是内置的;或是受timeScale影响的;
如:你的主角动画:如果你想Time.timeScale设置之后,依然不影响主角动画;
那么主角动画的播放就应该使用自己写的一套管理方法,可以使用到,Time.realtimeSinceStartup的时间间隔作判断,以播放动画;
解决方案:
如果硬要实现以上的需求:
可以去看一下这两个插件:
http://forum.unity3d.com/threads/136139-Pause-Controller-Released-Group-Pausing-without-timeScale-0
http://forum.unity3d.com/threads/188179-Time-Control-and-Pause-Kit-(inc-Bullet-Time-Freeze-Fast-Motion-etc)-RELEASED
直接开翻墙后,看第二个的视频,就是你想要的效果;
Unity 中实现子弹时间效果相关推荐
- 揭晓电影中的子弹时间与Nerf新视角合成
©作者 | 江告 元宇宙与子弹时间 近期大火的元宇宙,是利用科技手段进行链接与创造的,与现实世界映射与交互的虚拟世界. 人们所假定的元宇宙是一个和真实世界有着相似的元素和属性,并且可以和真实世界进行交 ...
- 如何在Unity中实现震动反馈效果
一.Unity中提供了震动的接口:Handheld.Vibrate(); Unity提供的这个接口的震动时长是0.5s.不能缩短震动时长 二.在Unity中要自定义震动时长的话,那就得在android ...
- [教程] 在Unity中制作物体破碎效果
这篇教程将教大家如何在Unity中制作一个简单的碎片效果.当物体撞击或销毁时,我们将物体分裂为更小的碎片来取代之前的仅仅直接"删除"物体. 需求 这篇教程需要最新版本的Unity, ...
- Unity中制作UI光晕效果(发光效果)
Unity中,我们怎么制作UI物体发光的渐隐渐现的效果呢? 比如说我们有一张月亮光晕的精灵图片 我们可以给它添加一个CanvasGroup组件 我们可以发现,组件上的Alpha值可以控制图片的透明度, ...
- Unity中实现翻书效果——Book Page Curl Pro插件
一:效果演示 二:介绍 --插件下的Scripts文件夹下有四个脚本 BookPro脚本是挂载到BookPro预制体上的,最最重要 Auto Flip脚本是实现自动翻页或者按钮翻页的扩展脚本 Page ...
- Unity中的淡入淡出效果
一.问题 想要在场景的转换做个过渡,不想直接的跳转.最简单的就是做个淡入淡出的效果. 二.搜索 百度基本是不指望了,资料太少,所以要用google,并且英文搜索. 搜关键字"unity3d ...
- Unity中SpriteRender实现广告牌效果
通过刷新修改SpriteRender组建来实现一个翻广告牌的效果,一般的资源原图最好是能两张或更多,实现起来就能类似广告牌那样展现,或者只有一张也可以单独作为一个显示图片的动画来用: 首先是游戏场景中 ...
- Unity中UI的LookAt效果实现
代码: //参数分别为:1.UI修改目标的Transform 2.朝向向量 3.起始向量public void UILookAt(Transform transform, Vector3 dir, V ...
- unity中瞄准倍镜效果和源码
以上是效果展示图. 看起来可能很粗糙,大家不要介意!哈哈哈哈.功能实现就行了.
最新文章
- Voice LAB-1 CUBE Cisco Unified Border Element
- systemctl介绍
- MATLAB报错“Exception in thread FileDecorationCache request queue java.lang.OutOfMemoryError: Java “
- 为什么matlab显示error,【求救】我安装了资源 MATLAB R2012b 后,显示有error……
- JAVA随机生成文件名:当前年月日时分秒+五位随机数
- jupyter notebook 操作
- 《计算机应用基础》18春作业,【北语网院】18春《计算机应用基础》作业_4.pdf...
- 【leveldb】资料
- MySQL安装配置详细教程
- 微信小程序二手交易系统ssm框架
- html标题和段落标记,Chap 03 HTML文字与段落标记
- Linux ssh登陆命令
- manjaro/arch chrome an application wants access to the keyring default keyring but it is locked 解决
- python利用tushare下载数据并计算当日收益率
- 深度揭秘阿里云函数计算异步任务能力
- Linux②—概述与基本命令,springboot微信点餐系统百度云
- 希捷 sshd 微型计算机,希捷2TB SSHD拆解/核心技术分析_希捷 Desktop 2TB 7200转 8GB混合硬盘_内存硬盘-中关村在线...
- js遍历对象(js遍历对象的所有属性)
- Loaded plugins: fastestmirror, refresh-packagekit, security Loading mirror speeds from cached
- 为什么越来越多的企业选择智能客服系统?
热门文章
- OpenGl入门基础知识-叩开3D的心扉
- 个人博客添加网易云音乐Flash插件
- bash输出颜色字体
- 有哪些适合放在程序员办公桌上的高逼格物件?
- 怎样恢复计算机管理员用户,忘记了电脑系统Administrator账户的密码?如何恢复?...
- Oracle 4月安全通告
- 1.windows11开启wsl2并安装Ubuntu 20.04
- Ethereum Introduction
- 华为鸿蒙创始人,华为鸿蒙操作系统怎样 华为创始人任正非:苹果是隐私榜样...
- 一次完整的JVM堆外内存泄漏故障排查记录