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(动作)

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

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

相关推荐
玩转C语言和数据结构3 天前
Lua下载和安装教程(附安装包)
lua·lua下载·lua安装教程·lua下载和安装教程·lua安装包
Arva .3 天前
HTTP Client
网络协议·http·lua
爱吃小胖橘4 天前
Lua语法(2)
开发语言·unity·lua
ellis19705 天前
LuaC API知识点汇总
unity·lua
爱吃小胖橘7 天前
Lua语法
开发语言·unity·lua
东方芷兰7 天前
JavaWeb 课堂笔记 —— 20 SpringBootWeb案例 配置文件
java·开发语言·笔记·算法·log4j·intellij-idea·lua
1nullptr8 天前
Lua上值与闭包
开发语言·lua
半夏知半秋9 天前
skynet-socket.lua源码分析
服务器·开发语言·学习·架构·lua
夜猫逐梦13 天前
【lua】luajit 命令行使用指南
开发语言·lua
利来利往13 天前
【奇怪的bug】lua的nil不报错
开发语言·bug·lua