第一中文网

第一百五十章 如何看懂调试界面 3 (第3/5页)

天才一秒记住【第一中文网】地址: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到

本章未完,请点击下一章继续阅读!若浏览器显示没有新章节了,请尝试点击右上角↗️或右下角↘️的菜单,退出阅读模式即可,谢谢!

如遇章节错误,请点击报错(无需登陆)

新书推荐

都市超品仙医 活在两个世界 大秦:这个太子总想着造反 与其说瞎话不如 穿越万界:神功自动满级 诛神乾坤 多子多福,仙女都被他抢了怎么办