已自动关闭

怎么让 动画 与 function(指令) 同步?(做模组)

幻***Lv.2 注册会员 发表于 2025-12-27 · 最后回复 2025-12-31 IP:湖南省 1,027 8
52铁粒
做模组的时候,怎样让 动画 与 function(指令) 同步,或者说有什么办法让 function(指令) 延迟执行,因为我想让 伤害(指令) 和 动画的某一时刻 对应。
有大佬知道吗?qwq

最佳答案

查看完整内容

脚本可以直接做时间序列,但是用function的话我能想到的只能是计分板 functions/commands.mcfunction: functions/loop.mcfunction: functions/tick.json:
回复 8 最早 最新 只看楼主
牢***版主
2025-12-27 17:32:50 IP:北京
本帖最后由 冥王大大 于 2025-12-27 22:34 编辑

脚本可以直接做时间序列,但是用function的话我能想到的只能是计分板
functions/commands.mcfunction:

  1. scoreboard objectives add time dummy
  2. scoreboard players add @s time 1
  3. playanimation @s animation.attacking
  4. function loop
复制代码

functions/loop.mcfunction:

  1. damage @e 1 entity_attack entity @s[scores={time=21}]
  2. execute as @s[scores={time=21}] run scoreboard objectives remove time
  3. execute positioned as @s[scores={time=1..21}] run function loop
复制代码

functions/tick.json:

  1. scoreboard players add @e[scores={time=1..20}] time 1
复制代码



2# 2025-12-27 17:32:50 回复 收起回复
幻***楼主Lv.2 注册会员
2025-12-28 07:44:42 · 来自手机 IP:湖南省
@冥王大大
脚本的时间列序该怎么做,因为我觉得积分板指令太多了,主要是我要做的生物多,而且技能多,所以我想学一下脚本的时间列序,求教
5# 2025-12-28 07:44:42 回复 收起回复
幻***楼主Lv.2 注册会员
2025-12-28 07:48:32 · 来自手机 IP:湖南省
@雹下冰
抱歉可能我的表述不准确,我的意思是 在 动画执行后 的 一个时间执行指令,不让 动画 刚执行,指令 也执行了
6# 2025-12-28 07:48:32 回复 收起回复
幻***楼主Lv.2 注册会员
2025-12-28 07:49:09 · 来自手机 IP:湖南省
@雹冰下
抱歉可能我的表述不准确,我的意思是 在 动画执行后 的 一个时间执行指令,不让 动画 刚执行,指令 也执行了
7# 2025-12-28 07:49:09 回复 收起回复
牢***版主
2025-12-28 12:16:08 · 来自手机 IP:北京
本帖最后由 冥王大大 于 2025-12-28 12:35 编辑
幻扬 发表于 2025-12-28 07:44
@冥王大大
脚本的时间列序该怎么做,因为我觉得积分板指令太多了,主要是我要做的生物多,而且技能多,所以 ...


时间序列也不是特别容易。首先需要一个new Map()储存生物的id和游戏刻值
然后在系统游戏刻循环建立一个递增结构:
  1. import system from "@minecraft/server"
  2. var ticking = new Map()
  3. function list(entity) {
  4. tick = ticking.get(entity.id)??0
  5. if (tick = 0) {
  6. entity.runCommand("playanimation @s animation.attack")
  7. }
  8. if (tick =20) {
  9. entity.runCommand("damage @e 1 entity_attack entity @s")
  10. }
  11. if (tick < 20) {
  12. tick += 1
  13. ticking.set(entity.id, tick)
  14. }
  15. }
  16. system.runInterval(() => {
  17. list(entity)//这里需要改获取实体以及触发条件
  18. }
复制代码

而且你需要将行为包设置为可使用脚本
要不然就用system.runJob(),前提是你会这个东西
8# 2025-12-28 12:16:08 回复 收起回复
您需要登录后才可以回帖 登录 | 立即注册
本版积分规则