喜欢研究各种有趣效果的「Cocos Star Writer」Nowpaper,之前同我们分享了《饥荒》同款 2.5D 视角的实现和用 RenderTexture 实现小地图与传送门等等,这一次他将在 Cocos Creator 中作物理回溯,实现类《时空幻境》的时间倒放玩法。
第一次接触到电子游戏中的时间倒退玩法,着实被惊艳的表现震惊到了,那种掌控时间的感觉,让人意犹未尽。可是这类游戏并不是很多,其中有个原因就在于,时间倒退的功能会对游戏机制的设计要求极高,程序处理也较为复杂。本文将使用 Cocos Creator 3.3,实现一个很酷的时间回溯的效果。
效果预览
2D 和 3D 的时间倒退技术方案基本上是一样的,本文将使用 3D 物理来实现上图的效果,即用一个球将平台上的方块墙打散,按住一个键产生时间倒退,松开键时间流逝继续。
回溯效果的原理并不复杂。我们只需要记录时间点上的物体状态数据,而记录的次数直接影响了内存量级,一般来说回放只记录小范围的时间段、然后在游戏循环逻辑中倒着播放出来即可。
每个记录间隔多少需要看你的数据设计。我们不需要将每个帧都记录,因为它实在是太快了。一般的做法是记录固定时间间隔上的状态数据,然后做中间插值,而快速倒放甚至都不需要做中间插值,这次的实现效果是没有做中间差值的快速倒放。
准备演示场景
首先搭建一个用来展示的场景,场景并不复杂,包含了一个平台、一个方块墙、一个球的预制体,素材来源于 Cocos Store。
场景准备好之后,我们在世界上创建一个节点,名字叫做 RewindSystem。后面在这个节点下面的所有物体,都会按照规则记录数据状态,它之外的都不会被记录,具体的实现我们等会儿再说。
添加一个 Canvas 节点,加入一个倒退图标,用来标记是否在倒退状态。