如果您登录有问题,或者回复有问题,请更新IE版本或更换其它浏览器,例如QQ浏览器,360极速浏览器
如果您查看资源感觉不方便,请点击上方导航栏的资源,我们的源码大部分是经过测试的,请看贴内测试图(测试过的源码都会附送编译好的一键端)
21 人签到
源码
源码
资源
资源
资源
资源
互动
互动

Unity里的时间操作(二) - 倒带

[复制链接]
查看: 261|回复: 3

468

主题

481

帖子

3万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
34320
发表于 2017-3-15 23:45:14 | 显示全部楼层 |阅读模式
今天要介绍的游戏是Lintrix,请多多支持购买愿意分享开发经验的好游戏


Lintrix

独立开发者总是同时身兼多职,今天我会继续为大家更深入的探讨,希望能对大家有帮助。
章节介绍:
建立关卡
时间倒带
游戏设计应用(敬请期待)
测试自动化(敬请期待)
在开发测试我们游戏的过程中,我们发现因为玩家经常犯错需要倒转,因此需要在游戏中做大量的记录。事实上,我们游戏的设计目的就是从各种方法来分散玩家的注意力,让玩家因为分心导致游戏失败。所以我们想让帮助玩家回想起曾今发生过甚么事,比如显示敌人的轨迹或在玩家之前死亡次数比较多的地方放个碰撞体。
有人担心这样做会让屏幕变得混乱,或让玩家容易重复之前的行为而不去思考新的方法,降低游戏的趣味性。为了解决这个问题,我们发现利用时间轴功能来提示是个不错的选择。在每次游戏失败玩家点"重新开始"之后,我们可以如图所示用倒带的方式回放回到起始点:



实现方法
事实上,几乎所有回放要做的工作都在上一篇关卡建立所介绍的时间轴工具都完成了。但我们还不确定是否是最好的方案,所以我们先让敌人和水晶的移动用相同方式回播。
虽然用之前的后退操作就能完成敌人和水晶的回播。但是关卡中有些事件是由玩家或者玩家的动作触发的。所以我们需要为TimeManager加入新的接口:
[AppleScript] 纯文本查看 复制代码
?

01
02
03
04
05
06
07
08
09
10
11
public delegate void ReversingTimeActionDelegate();

public class TimeManager
{
    class ReversingActionWithTime
    {
       public float Time {get; set;}
       public ReversingTimeActionDelegate ActionToCarryOut {get; set;}
    }

    public void RememberAction(ReversingTimeActionDelegate action)
}

我们导入了ReversingActionWithTime这个类别来记录动作的时间以及一个委托函式,它可以执行反向动作(类似程序设计里的命令模式,但是透过与时间绑定而不是点ctrl+z或其他类似的组合键来触发执行)。
当关卡执行且动作发生时,只需要把RememberAction反向函式加到这一时间,如果想让时间倒退就可以呼叫这个函式。
例如,当有敌人碰到障碍消失时就加这个委托函式。之后如果点重新开始,回到这一时间点时,这个函式会再次启动敌人的TimeManager呼叫,使敌人出现在屏幕上:
[AppleScript] 纯文本查看 复制代码
?

01
02
03
04
05
06
07
08
09
10
11
12
13
14
public class Enemy{

    void onCollisionWithBarrier()
    {
       timeManager.RememberAction(Activate);
       Deactivate();
    }

    void Activate()
    {
       // do the activation work
    }

    //.. Remaining implementation
}

在时间倒退模式时我们并不需要碰撞,因为这些碰撞已经在游戏执行时就已经发生。所以只需要以更快的速度跳过一些帧来倒退游戏状态即可,不需要强大的硬件,倒退可以按照正常速度的20倍进行,而且关卡倒退完成就相当于重置所有的对象位置。
但在某些情况下还是需要将一些变量存在函数里。例如下图中黄色的子母弹(被消灭后会产生小敌人),它的位移需要被记录下来,因为产生的小敌人轨迹会有1或2秒的随机延迟。


免责声明
  1.零度游戏源码(http://www.0dyx.xyz) 所发布的网游信息、网游源代码资源均来自互联网,非本站开发。如有侵犯您的合法权益请来信告之,我们会在三个工作日内予以清除。
  2.零度游戏源码(http://www.0dyx.xyz) 中所有资料、资源文件仅供技术学习、研究之用,请必须在24小时内删除所下载文件,切勿用于商业用途,否则由此引发的法律纠纷及连带责任本站和发布者概不承担。
  3.零度游戏源码(http://www.0dyx.xyz) 致力于打造国内最权威、最完整的网游源代码下载站点,所有下载源码都是按“原样”提供,不会删减、揉碎,力求全网最全源码。我们提供的源码就是我们团队所研究的代码初始版本,学习价值最高,对于更新、维护的版本,我们会给出维护清单。
  4.零度游戏源码(http://www.0dyx.xyz) 对提供下载的软件等不拥有任何权利,其版权归该下载资源的合法拥有者所有。
网站主域名:www.0dyx.cn 觉得网站不错可以分享给朋友

0

主题

609

帖子

4164

积分

论坛元老

Rank: 8Rank: 8

积分
4164
发表于 2017-3-16 07:00:49 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊

网站主域名:www.0dyx.cn 觉得网站不错可以分享给朋友

0

主题

617

帖子

4265

积分

论坛元老

Rank: 8Rank: 8

积分
4265
发表于 2017-3-16 07:55:59 | 显示全部楼层
正需要,支持楼主大人了!

网站主域名:www.0dyx.cn 觉得网站不错可以分享给朋友

0

主题

609

帖子

4467

积分

论坛元老

Rank: 8Rank: 8

积分
4467
发表于 2017-3-17 07:15:50 | 显示全部楼层
支持零度游戏

网站主域名:www.0dyx.cn 觉得网站不错可以分享给朋友
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

精彩图文
VIP特价活动即将结束,全网最低价

Copyright   ©2015-2016  零度游戏源码素材  Powered by©Discuz!  技术支持:零度