跳转到内容

变量

在《我的世界》(Minecraft)中,变量是一类可读参数,它们用于记录玩家的各类行为,像玩家抬头的视角、行走的速度以及玩家的生命值等。通过读取这些变量,能够在模型上实现一些自定义的行为。

例如:“当玩家抬头时,背后的头发也会向后旋转,以此抵消抬头动作产生的旋转,避免整个头发因抬头旋转而出现穿胸的情况。”

再如:“检测玩家的垂直速度,使头发在玩家下落时飘起,让模型显得更加真实。”

  1. 可读变量:以 query. 开头,此类变量只能读取,不可写入,仅用于记录实体或游戏中的实时行为。
  2. 实体变量:以 variable. 开头,可读可写,存储于实体之中,需要通过赋值操作来写入数据。
  3. 临时变量:以 temp. 开头,同样可读可写,属于临时存储的变量,在一个动画循环结束后就会被销毁。
  4. 常驻变量:以 variable.roaming. 开头,其功能等同于实体变量,但在玩家退出游戏或者切换维度时,变量数值不会重置。

上述各类变量中:

  • query. 可缩写为 q.
  • variable. 可缩写为 v.
  • variable.roaming. 可缩写为 v.roaming.
  • temp. 可缩写为 t.
  • 其他变量不支持缩写。

实体变量需要通过赋值操作来更改其数值,若未进行赋值,其初始数值为 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,直至下次再次对其赋值。

网络上有许多相关的教程和资源,可供你学习更多关于实体变量的知识。例如基岩版开发 wiki:Molang

如果你已经掌握了基础知识,可以尝试挑战一些更高级的玩法,还可以加入游戏社区,与其他玩家一同交流学习。