用户:
I桔汁糖浆I查看:0 回复:4 评论:0 创建时间:2018-12-09T11:49:23
这次教大家一个游戏结束后结算分数时分数变动的小效果
学习本效果,你需要知道:
·有关四则运算的基础知识
·有关绝对值的基础知识
·有关分数的基础知识
·有关方程的基础知识
请各位先看一下这个作品:
点击结算查看效果,点击设置分数改变总分。
相信大家会发现,当中间的数值接近总分时,其变化的速度会从匀速变得慢下来。
教学开始。
首先是这个模块:
看上去是不是很长?我们先把他拆分一下:
整个运算重点为红框内的部分,而其中两个被绿框标注的部分一模一样。绿框内左边的式子,相信研究过我的缓动算法的人应该都不陌生,v是设置好的权重值。而右边的limit,则是一个常量,用来限制变量改变的值的大小。
这个要讲起来比较麻烦,先贴出公式:
a+b |a-b|
—— - —— = min(a, b)
2 2
min()大家应该都知道吧,不知道也可以靠猜得知它的作用就是输出括号内两个数值中较小的那个值。
等式左边的一堆东西,效果等效于min(),大家可以用笔和纸,随便找两个值试一下。
十分感谢The Minecraft Lover工作室的创始人乾坤与我探讨相关公式。
用这个公式,可以输出缓动算法与常量的最小值。
那么问题来了:这个运算出来的值的范围为0~100,要如何把它映射到游戏的成绩呢?
为了解释,我特地做了这张图:
这张图,应该能把思路表达出来。
总之,我们就求出了x的值——即把前一个运算得出来的数值映射到总分上。
用积木表达,就是这样:
为了避免小数出现,所以我们需要向上舍入。
再稍加修改,整个模块就成了这样:
至于如何把x的值反映到数字角色上,相信你们有各种办法实现。实在想不出来的,也可购买本作品,自行查看:
https://ide.codemao.cn/we/5438374
其实吧,直接把prop变量赋值的运算中的100换成总分,然后效果用prop变量的值表达也行,但是这样的话不同的分数其结算的时间也会不同。于是我就用上方的方式统一了结算的时间。
活动喵恭喜利姆利姆露发布编程一小时帖子和作品各篇,个人积分+4,个人积分累计截止到12月9日,活动详情请查看链接:https://www.codemao.cn/community/167979
再接再厉,活动喵相信你能成功带回个人奖品!
点赞0
评论