先移动还是先计算

简介: 嗨!大家好,我是小蚂蚁。今天我们分享一下游戏中物体运动时会遇到的一个问题,这也是我在制作泡泡龙游戏时所遇到的一个问题,即到底是应该先移动后计算,还是应该先计算后移动。

嗨!大家好,我是小蚂蚁。


今天我们分享一下游戏中物体运动时会遇到的一个问题,这也是我在制作泡泡龙游戏时所遇到的一个问题,即到底是应该先移动后计算,还是应该先计算后移动。



如图,游戏中的物体移动是一帧一帧的,即每一帧移动一定的距离,游戏通常在 1 秒钟内会执行 60 帧,所以每帧的时间是非常短的,因为人眼会有视觉停留,所以我们看到的游戏中的物体是在连续的移动,这个就是游戏中物体移动的基本原理。图中的蓝色的球在竖直的向上移动,每一帧移动 40 的距离。


接下来我们来看一下问题:假设球在 0 的位置上向上移动,每帧移动距离为 40,现在想要让球在 100 的位置停下来,该怎么处理?



如图,球从 0 的位置开始移动,第一帧移动到 40 ,第二帧移动到 80,第三帧移动到 120,现在想要让球在 100 的位置停下来,有两种方案。


第一种让球先移动,在每一帧移动完成后做个判断,如果位置超过了 100,那就让球退回到 100。


第二种先计算球将要到达的位置,如果这个位置超过了 100,那就将位置设置到 100,然后再让球开始移动。


两种方案对应的过程其实是这样的。



为了更直观的演示,我们直接做一个示例来看一下。


布置一个简单的场景,红球表示先运动后计算,蓝球表示先计算后运动,上方有一条目标线,游戏开始后,两个小球向上移动,到达目标线停止。



先看一下红球的积木逻辑。



接着再看一下蓝球的积木逻辑。



这里为了便于观察两个球在到达目标位置时的移动过程,我使用了“等待1秒”积木,这样可以看到小球最后一帧的调整过程,预览一下场景,看看结果。



红球越过目标位置,然后向后调整。蓝球会在目标位置前调整,然后再达到目标位置。


在泡泡龙游戏中原来使用的是先移动后计算的方式,这样带来了一个问题,就是发射的泡泡到达停靠位置时,总是有一个“先跑过后拉回”的过程,不发现还好,在发现了之后,你总是会特别关注这一过程,越看越明显,而且还为此多了一种担心,万一跑过了拉不回来了怎么办?


为了解决这种不适感,我决定对发射泡泡的移动过程进行改造,改用先计算后移动的方式。改完过后终于舒适了,再也不用担心发射的泡泡跑过头了,因为在正式移动开始之前,我们已经知道了要达到的位置。



这个其实也叫计算过程前置,可以让我们有机会在移动真正开始之前,先对要达到的位置进行判断和处理,在确定好目标位置没有问题了之后,再前进。

其实所有的抽奖类型的程序,在你点击开始抽奖按钮的那一刻,结果就已经计算出来了。后续不论是何种类型的抽奖都是对于既定结果的演示而已,这就叫计算前置,所以当你下次盯着抽奖转盘的时候,心态就会平和很多。大多数时候并不是差一点点就中奖了,而是有人想让你认为差一点点就中奖了。

关于发射泡泡的移动处理大家可以参考【这篇教程】,当然那篇教程里使用的移动方式是“先移动后计算”,看了今天的文章后,不妨思考或者尝试一下,把之前的移动方式改成“先计算后移动”。


这里是泡泡龙游戏模版的小程序码,可长按识别体验。

如需泡泡龙模版可直接点击下方链接前往小商店购买。

我是会做游戏也会教你做游戏的小蚂蚁,想学习做游戏的话,关注我的公众号就对啦!

这里是我的游戏开发课程服务,不只是一门课,而是一套围绕着新手学习做游戏有关的一整套服务。致力于帮助更多的人学会做游戏并做出自己的游戏,目前已有 47 名学员,多位同学已经通过学习做出了自己的游戏,如果你是一位想学习做游戏的朋友,欢迎【点击这里】了解详情。

这是我做的几个简单好玩消除小游戏,闲暇之余希望能给你带来片刻的放松和愉悦。也欢迎加个微信,交个朋友,朋友圈每日分享与做游戏有关的知识内容,可以来围观。接受付费咨询,不闲聊,望见谅。

相关文章
|
8月前
|
存储 数据处理
数据的表示及计算
数据在计算机系统中以二进制形式表示和计算。二进制是一种由0和1组成的数字系统,计算机使用二进制来表示和处理数据。
23 0
|
9月前
|
Java
使用BML进行计算
使用BML进行计算
|
2天前
|
运维 Serverless 数据库
函数计算产品使用问题之如何并行运算函数计算任务,并对任务计算后的结果再进行聚合运算
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
1月前
|
存储 NoSQL Unix
乘法逆元的计算
乘法逆元的计算
36 0
|
7月前
|
人工智能 数据处理 云计算
刊首语|计算到底是算什么
刊首语/EDITORS' NOTE
61 0
|
机器学习/深度学习 算法 数据挖掘
计算GMAC和GFLOPS
GMAC 代表“Giga Multiply-Add Operations per Second”(每秒千兆乘法累加运算),是用于衡量深度学习模型计算效率的指标。它表示每秒在模型中执行的乘法累加运算的数量,以每秒十亿 (giga) 表示。
244 0
计算GMAC和GFLOPS
计算职工工资
计算职工工资
96 0
|
消息中间件 Prometheus 监控
P99 是如何计算的?
P99 是如何计算的?