天才一秒记住【第一中文网】地址:www.dyzww.cc
skyLight = block.getSkyLightLevel if (skyLight > 0):
mood = mood -(skyLight \/ maxLightLevel)* 0.015
else:
blockLight = block.getblockLightLevel mood = mood -(blockLight - 1)\/ tickdelay
if (mood ≥ 1.0):
player.playSpookySound mood = 0.0
else if (mood < 0):
mood = 0.0
翻译:
声明“更新情绪”方法(情绪):
设定变量“游戏刻延迟”值为6000
设定变量“最大光照等级”值为15
在以玩家为中心的17x17x17的立方体中随机选定一个方块
获取该方块的天空光照等级
如果(天空光照等级大于0)
设定变量“情绪”的值=情绪-(天空光照等级÷ 最大光照等级)x 0.015
否则
获取该方块的方块光照等级
设定变量“情绪”的值=情绪-(方块光照等级- 1)÷游戏刻延迟
如果(情绪大于等于1.0)
执行玩家类方法“游戏里诡异的声音”
设定变量“情绪”的值为0.0
否则如果(情绪小于0)
设定变量“情绪”的值为0.0
为了让你能够真正理解这算法是怎么算的,我们来举个栗子。
假设此时你正在矿洞里挖矿。在上一游戏刻中,你的情绪值为0.(mood 99%),如果此刻游戏随机到了你正前方五格的方块,那么:
游戏通过执行block.getSkyLightLevel这个方法(Java语言中的方法类似于minecraft中的函数,将一串代码包起来成为一个方法,需要执行的时候再调用),获取到了这个方块的天空光照等级为0。
因为这个方块的天空光照等级是0,所以游戏又执行了block.getblockLightLevel这个方法,获取到了这个方块的方块光照等级,发现也是0。
于是游戏做了一个简单的运算:
mood = 0.-(0-1)÷6000
=0.-(-1)÷6000
=0.-(-0.000)
=0.+0.000
=1.000
此时游戏发现1.000大于1,所以执行了player.playSpookySound方法,然后你就听到了一辆地铁驶过的声音(cave 11)。
但如果这个方块的方块光照等级大于等于1,或者这个方块的天空光照大于0,那么mood值反而会减少一些或不增不减,因为如果仔细观察上面的代码,你会发现计算mood时都是减法,要让mood增加,必须要让减数为负数,各种情况下,只有天空和方块光照等级都为0的情况下才能得出负数。
mood算法每游戏刻都会执行一遍,每次执行最多增加1\/6000。也就是说,在极端的情况下,即你完全置身于黑暗之中,mood也需要每五分钟才能够轮回一次。
说了这么多,那么这个mood xx%到底有什么用?
看一下上面的假设就知道了,当mood到
本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!