首先声明,博主Unity版本为5.4.4

在游戏中加入时光逆流可以衍生出很多有趣的事,独立游戏《时空幻境》里面就有这个功能,这篇文章就是模拟时光逆流


首先简单的搭建一下场景

这里就是拿cube堆出了大方块

所有的cube都添加刚体,脚本后面附上

把bomb摆到cube中间


上代码:

using UnityEngine;
using System.Collections;public class Bomb : MonoBehaviour {public float radius = 5.0f;//爆炸半径public float power = 10;//爆炸力public float explosiveLift = 1.0f;//从下方多少距离施加力// Use this for initializationvoid Start () {}// Update is called once per framevoid Update () {if (Input.GetKeyDown (KeyCode.Space))Fire ();}private void Fire(){Vector3 pos = transform.position;Collider[] colliders = Physics.OverlapSphere (pos,radius);foreach (var hit in colliders) {if (hit.GetComponent<Rigidbody> ()) {hit.GetComponent<Rigidbody> ().AddExplosionForce (power,pos,radius,explosiveLift);}}}
}
using UnityEngine;
using System.Collections;
using System.Collections.Generic;public class TimeBack : MonoBehaviour {public bool isRewinding = false;//用来判断是否需要时光逆流public float recordTime;//时光逆流时间private List<Information> informations;private Rigidbody rb;// Use this for initializationvoid Start () {rb = GetComponent<Rigidbody> ();informations = new List<Information> ();}// Update is called once per framevoid Update () {//按下shift开始时光倒流if (Input.GetKeyDown (KeyCode.LeftShift)) {StartRewind ();}//松开时停止if (Input.GetKeyUp (KeyCode.LeftShift)) {StopRewind ();}}void FixedUpdate(){if (isRewinding)Rewind ();elseRecord ();}/// <summary>/// 开始时光逆流/// </summary>private void StartRewind(){isRewinding = true;rb.isKinematic = true;//使物体不受力}/// <summary>/// 停止时光逆流/// </summary>private void StopRewind(){isRewinding = false;rb.isKinematic = false;//物体开始受力}/// <summary>/// 时光逆流/// </summary>private void Rewind(){//记录点数量大于0时才可以倒流if (informations.Count >0) {Information information = informations [0];transform.position = information.position;transform.rotation = information.rotation;informations.RemoveAt (0);}}/// <summary>/// 记录物体的信息/// </summary>private void Record(){if (informations.Count > Mathf.Round (recordTime / Time.fixedDeltaTime)) {informations.RemoveAt (informations.Count-1);}informations.Insert (0,new Information(transform.position,transform.rotation));}
}
using System;
using UnityEngine;/// <summary>
/// 记录物体的位置跟旋转信息,用于实现时光倒流的技能
/// </summary>
public class Information{public Vector3 position;public Quaternion rotation;public Information (Vector3 _position,Quaternion _rotation){position = _position;rotation = _rotation;}
}

最后的效果的话,博主不会录gif所以,喜欢的自己去试吧

使用Unity实现时光倒流相关推荐

  1. Unity时光倒流效果实现

    Unity时光倒流效果实现<25/11/2017> 场景:一个Panel,一个由众多小Cube堆叠而成的巨大Cube,巨大Cube中心放置爆炸点Bomb. 实现方式:一共就三个脚本,每个C ...

  2. 有些错误,即便时光倒流也无法弥补——《时光幻境》

    当我们追溯独立游戏的起源,就会发现其实独立游戏已经有很长的历史了,早在九十年代就有独立游戏开发者或团队,截止到目前独立游戏已有将近三十年的历史.之所以要在这里提独立游戏的历史,是因为今天说的这款游戏, ...

  3. git branch 为什么会进入编辑状态_Git很难,搞砸很容易,好在有神奇命令让时光倒流...

    Git很难,搞砸很容易,更糟糕的是搞砸了还不清楚什么问题. 虽然Git文档很全面,但不清楚什么问题,不知道问题名称,连搜索答案都无从下手.国外小哥也有遇到这些问题,因此搞了个 ohshigit 的网站 ...

  4. 时光倒流-第12届蓝桥杯Scratch选拔赛真题精选

    [导读]:超平老师计划推出Scratch蓝桥杯真题解析100讲,这是超平老师解读Scratch蓝桥真题系列的第88讲. 蓝桥杯选拔赛每一届都要举行4~5次,和省赛.国赛相比,题目要简单不少,再加上篇幅 ...

  5. 第 254 场力扣周赛(KMP、贪心、快速幂、二分+多源bfs、并查集 + 时光倒流)

    第 254 场力扣周赛 稀里糊涂双眼双眼惺忪的做了三道,错了4次...还是600来名 5843. 作为子字符串出现在单词中的字符串数目 题目描述 给你一个字符串数组 patterns 和一个字符串 w ...

  6. 数中有术:看大数据如何让“时光倒流”

    据国家旅游局发布的消息:2015年,中国国内旅游突破40亿人次,旅游收入过4万亿元人民币,出境旅游1.2亿人次.中国国内旅游.出境旅游人次和国内旅游消费.境外旅游消费均列世界第一.越来越多的中国游客将 ...

  7. 时光倒流:业务支撑那些事(四)

    时光倒流:业务支撑那些事(四)文 | 宁宇 手中有粮,心中不慌.靠这套全新的计费结算系统,支撑着移动电话的迅猛发展,这种局面一直延续到2000年. 2000年中,中国移动总部已经成立,当时的名字叫做& ...

  8. 水管局长数据加强版:lct,时光倒流,最小生成树,边化点

    Description: SC省MY市有着庞大的地下水管网络,嘟嘟是MY市的水管局长(就是管水管的啦),嘟嘟作为水管局长的工作就是:每天供水公司可能要将一定量的水从x处送往y处,嘟嘟需要为供水公司找到 ...

  9. 我们时光倒流能倒流吗

    先说时光倒流.假如时光能够倒流五十年,那么在比尔盖茨开发windows之前,您抢先开发一个windows系统,那么也许今天的世界首富就是您了.假如时光能够倒流三十年,当时的深圳还是一个小渔村,您在其中 ...

  10. 假如时光倒流,我会这么学习Java 1

    回头看看, 我进入Java 领域已经快15个年头了, 虽然学的也一般, 但是分享下我的心得,估计也能帮大家少走点弯路. [入门] 我在2001年之前是C/C++阵营, 有C和面向对象的基础, 后来转到 ...

最新文章

  1. 在spring MVC项目中集成Spring session redis (使用spring session框架,redis作为存储缓存)...
  2. [Config]如何利用ConfigurationSettings.AppSettings.GetValues读取配置文件中多个同Key的value...
  3. Yii2 中cookie的用法(2)
  4. “Imperceptible,Robust,and Targeted Adversaria lExamples for Automatic Speech Recognition”
  5. ProgressDialog 一个使用类,多多提建议
  6. 枚举枚举和修改“最终静态”字段的方法
  7. 担心你的文章图片被盗?试试用python加水印
  8. java的一些小知识总结
  9. 用汇编的眼光看C++(之模板类)
  10. 2018四川高考文科21题
  11. LeetCode 16最接近的三数之和
  12. Hbase Cellutil源码
  13. python3使用smtplib通过qq邮箱发送邮件
  14. php_steam,Steam 帐户使用 - Steam Support
  15. 标准库函数begin和end的使用
  16. 2022年诺贝尔物理学奖的科学内涵辨识
  17. 微信小程序调用科大讯飞 在线合成语音接口(文字转语音)
  18. 在VMware中安装CentOS7(超详细的图文教程)
  19. 我们怎样处理垃圾网站举报?
  20. RK3588 rtc-hym8563设备开发

热门文章

  1. IT行业是什么工作?做什么的?
  2. 你必须要知道的软件测试3个主流方式
  3. mysql distinct count_MySQL中distinct和count(*)的使用方法比较
  4. 使用Kinect2作为Oculus游戏应用的输入设备
  5. netbeans php 发布,Apache NetBeans 12.0 LTS 发布
  6. Ubuntu压缩文件的分卷压缩和解压
  7. vue仿163musicPC端
  8. OpenStack详解、排错、经验总结
  9. LearnOpenCV学习——平均脸
  10. 先森请自重,小女子只卖身不卖艺