变量
在《我的世界》(Minecraft)中,变量是一类可读参数,它们用于记录玩家的各类行为,像玩家抬头的视角、行走的速度以及玩家的生命值等。通过读取这些变量,能够在模型上实现一些自定义的行为。
例如:“当玩家抬头时,背后的头发也会向后旋转,以此抵消抬头动作产生的旋转,避免整个头发因抬头旋转而出现穿胸的情况。”
再如:“检测玩家的垂直速度,使头发在玩家下落时飘起,让模型显得更加真实。”
- 可读变量:以
query.
开头,此类变量只能读取,不可写入,仅用于记录实体或游戏中的实时行为。 - 实体变量:以
variable.
开头,可读可写,存储于实体之中,需要通过赋值操作来写入数据。 - 临时变量:以
temp.
开头,同样可读可写,属于临时存储的变量,在一个动画循环结束后就会被销毁。 - 常驻变量:以
variable.roaming.
开头,其功能等同于实体变量,但在玩家退出游戏或者切换维度时,变量数值不会重置。
上述各类变量中:
query.
可缩写为q.
variable.
可缩写为v.
variable.roaming.
可缩写为v.roaming.
temp.
可缩写为t.
- 其他变量不支持缩写。
实体变量的使用方法
Section titled “实体变量的使用方法”实体变量需要通过赋值操作来更改其数值,若未进行赋值,其初始数值为 null,赋值符号为 =
。
示例:variable.jump = query.is_jumping
query.is_jumping
可实时读取玩家是否处于跳跃状态。
假设要实现跳劈(这是《我的世界》的原版机制,玩家在跳跃下落过程中进行攻击会造成暴击),就可以使用 query.is_jumping
来读取玩家是否处于跳跃状态。
不过,query.is_jumping
的值是实时变化的,当玩家落地时,query.is_jumping
的值会立即变为 0。
如果希望仅在动画开头检测到玩家跳跃,且后续玩家落地也不会改变检测结果,就需要用到实体变量。
在动画开头写入 variable.jump = query.is_jumping
,若玩家在动画播放开头处于跳跃状态,variable.jump
的数值将为 1。并且,若之后不对 variable.jump
进行任何修改,其数值会一直保持为 1,直至下次再次对其赋值。
更多学习资源
Section titled “更多学习资源”网络上有许多相关的教程和资源,可供你学习更多关于实体变量的知识。例如基岩版开发 wiki:Molang
如果你已经掌握了基础知识,可以尝试挑战一些更高级的玩法,还可以加入游戏社区,与其他玩家一同交流学习。