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

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

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

相关推荐
利来利往20 小时前
【ai写代码】lua-判断表是否被修改
lua
陈天cjq20 小时前
Redis 实用型限流与延时队列:从 Lua 固定/滑动窗口到 Streams 消费组(含脚本与压测)
redis·junit·lua
Warren9820 小时前
Lua 脚本在 Redis 中的应用
java·前端·网络·vue.js·redis·junit·lua
柯南二号2 天前
MacOS 系统计算机专业好用工具安装
开发语言·lua
神洛华2 天前
Lua语言程序设计2:函数、输入输出、控制结构
开发语言·lua
测试界清流6 天前
Postman接口测试入门
开发语言·lua
Volunteer Technology6 天前
Lua基础+Lua数据类型
开发语言·junit·lua
Volunteer Technology7 天前
openresty-lua-redis案例
redis·lua·openresty
WaterRun10 天前
开源项目luaToEXE: 将.lua封装为自带解释器无lua环境依赖的可执行文件工具
lua
William一直在路上10 天前
LUA脚本语言
开发语言·lua