Roblox踩坑1——动画无法完整播放

在做一款挂机类游戏的时候,打算给地图怪物做一个被击败动画,我就在击败怪物的回调里面加了一个动画,但是无论如何都没办法正常的播放。

Lua 复制代码
if humanoid then
    -- 创建一个 Animation 实例并设置动画 ID
    local animation = Instance.new("Animation")
    animation.AnimationId = "rbxassetid://139676583914998"

    -- 加载动画到 humanoid
    local animTrack = humanoid:LoadAnimation(animation)
    
    -- 播放动画
    animTrack:Play()

    -- 设置动画结束时的回调函数
    animTrack.Ended:Connect(function()
        print("动画播放完毕!")
    end)
else
    warn("模型中没有 Humanoid 实例!")
end

代码很正常也很简单,应该不会有什么逻辑错误,打印的信息也能正常触发,然后我把模型和动画都拖到了另一个场景里就可以正常用,所以并不是模型的问题,

由于这个项目我并没有从头开始跟,我也并不知道之前的程序在播放动画时进行了什么设置,后来在对比两个场景的模型时候发现,这个怪物模型一直在做一个休闲动画,貌似就是这个休闲动画顶替掉了我的死亡动画,于是我把这个动画的优先级 调到了最高,就可以正常播放了

Lua 复制代码
animTrack.Priority = Enum.AnimationPriority.Action -- 设置为最高优先级

animTrack:Play()

顺嘴一提,

Roblox 的动画优先级分为四个级别,从低到高分别是:

  1. Core(核心)

    • 用于核心动作,例如角色的基础移动和默认动画(站立、行走、跳跃等)。
    • 优先级最低,通常用于覆盖默认动画。
    • 适用场景:系统级别的基础动画。
  2. Idle静止)

    • 用于站立或其他不活动状态下的动画。
    • Core 优先级高,但仍然容易被其他更高优先级的动画覆盖。
    • 适用场景:定制角色的站立、休息等动画。
  3. Movement(移动)

    • 用于移动相关的动画,例如跑步、跳跃、游泳等。
    • IdleCore 优先级高,但仍可能被 Action 动画覆盖。
    • 适用场景:角色移动、跑步等场景的动画。
  4. Action(动作)

    • 优先级最高的动画类型,用于需要覆盖所有其他动画的场景。
    • 适用场景:攻击、挥剑、跳跃攻击、特殊技能等需要显著表现的动画。

所以当你的动画明明进入回调了,但是却无法播放,可以先去看一看播放动画的优先级,有没有被其他动画所覆盖,需要注意的是,如果两个动画的优先级相同,那它们就会同时影响部件,使得动作看起来非常奇怪,所以还是尽量明确每个动画的用途以及播放时间,避免多个动画同时控制一个部件。

相关推荐
kebeiovo6 小时前
C++与 Lua的交互
c++·lua
wh_xia_jun1 天前
Apifox 测试项目实操1
开发语言·lua
颖火虫盟主1 天前
Lua 协程:从 API 到底层原理再到 Skynet 架构的完整学习路径
学习·架构·lua
tongluowan0072 天前
Redisson的参数及工作原理
java·redis·lua·分布式锁
上海合宙LuatOS2 天前
Air8000低功耗指南
开发语言·物联网·php·lua
wh_xia_jun2 天前
HttpRunner 编写测试用例
开发语言·lua
乐于分享的阿乐2 天前
【2026最新】Postman新旧版本下载安装+免登录 保姆级教程
测试工具·lua·postman
彭于晏Yan3 天前
自定义注解+Lua脚本实现限流
java·spring boot·后端·lua
测试那点事儿3 天前
API 鉴权三种常用做法:用生活例子讲明白
开发语言·lua·生活
灰子学技术4 天前
Envoy Lua 过滤器功能实现分析
开发语言·lua