变量介绍
约 729 字大约 2 分钟
2025-01-28
什么是变量
变量是 Minecraft 中的一些可读参数,它们记录了玩家的行为。例如抬头的视角、行走的速度、玩家的生命值等等。通过读取这些变量,可以在模型上实现一些自定义的行为。
例如:当抬头时背后的头发也向后旋转来抵消抬头的旋转,避免整个头发因为抬头的旋转而出现头发穿胸而过。
例如:检测玩家的垂直速度,让头发在下落时飘起来,让模型更加真实。
变量有哪些类型
- 可读变量:
query.
可读不可写,只记录了实体或游戏中的实时行为。 - 实体变量:
variable.
可读可写,存储于实体中,需要通过赋值来写入 - 临时变量:
temp.
可读可写,临时存储的变量,在一个动画循环之后就会销毁 - 常驻变量:
variable.roaming.
等同于实体变量,但是在退出游戏或者切换维度时不会重置
以上的变量里:
query.
可以缩写成q.
variable.
可以缩写成v.
variable.roaming.
可以缩写成v.roaming.
temp.
可以缩写成t.
- 其他变量不可缩写
怎么使用实体变量
实体变量需要通过赋值来更改其数值,否则其初始数值为 null,赋值符号是 =
注意
=
是赋值符号,==
才是相等符号。
空值初始化
当你想为一个可能为 null 的变量附加一个初始值时,可以使用 ??
语句。
比如 variable.jump=variable.jump??1
,当 variable.jump
为 null 时,那么将其设定为 1,如果 variable.jump
有值时,那么原样返回。
例:variable.jump=query.is_jumping
query.is_jumping
可以读取玩家是否处于跳跃状态,并且是实时的。
假设需要做一个跳劈(Minecraft 的原版机制,在跳跃下落过程中攻击会造成暴击),那我就可以使用 query.is_jumping
来读取玩家是否处于跳跃状态。
但是 query.is_jumping
是实时变化的,当玩家落地时 query.is_jumping
的会立刻变为 0。
如果想只在动画的开头检测到跳跃,之后的落地都不会改变,那就需要用到实体变量了。
在动画的开头写入 variable.jump=query.is_jumping
,当玩家在动画播放的开头时处于跳跃状态,variable.jump
的数值就是 1。并且如果之后不对 variable.jump
做任何修改,那么 variable.jump
的数值会一直保持为 1,直到下次再次对其赋值。
更多学习资源
网上有很多教程和资源,可以学更多关于实体变量的知识。例如基岩版开发 wiki:https://bedrock.dev/zh/docs/stable/Molang
如果你已经掌握了基础,可以挑战一些更高级的玩法,还可以加入一些游戏社区,跟其他玩家一起交流学习。