Unity - A计划(永久有效期) 扫二维码继续学习 二维码时效为半小时

(207评价)
优惠后 ¥1899.00优惠前 ¥2499.00 双十一全年最大力度限时优惠
1对1 答疑即时回复7天无理由退款30天价保提问必答

服务保障

1对1 答疑

提供专属的一对一在线答疑,快速答疑解惑。

即时回复

及时响应学习咨询,帮助解决问题。

7天无理由退款

购买后7天内可申请无理由退款。

30天价保

购买后30天内如遇降价,可申请价保。

提问必答

对于提问做到有问必答,帮您扫清学习过程中的种种障碍

unity timeline技能表现用法?
czt5yue11发起了问答10-12
1
回复
1510
浏览

一些回合制游戏中,如仙剑,一些技能华丽动画,镜头组合,是不是用timeline做的?如果是timeline,场景A的时候对怪物A使用timelineA,场景B时对怪物B也使用timelineA,我想问,timeline的对象能变化吗?总不能每个怪物都创建一个timeline,只是换了技能作用对象吧?

所有回复
  • siki • 10-12

    是的,这类技能表现、镜头组合,很多项目就是用 Timeline 做的,镜头部分一般再配合 Cinemachine。

     

    你担心的「每个怪物都要建一个 Timeline」不用担心,关键在于:Timeline 资源本身只记录「有哪些轨道、什么时间做什么」,不记录「这条轨道控制的是哪个物体」。这个绑定关系是存在场景里的 PlayableDirector 组件上的,而且可以在运行时随时换。

     

    所以做法是:一个技能只做一个 Timeline,播放之前把轨道重新绑到这次的施法者和目标身上。大致是这样:

     

    var timeline = (TimelineAsset)director.playableAsset;

    foreach (var track in timeline.GetOutputTracks())

    {

        if (track.name == "目标") director.SetGenericBinding(track, 当前怪物的Animator);

        if (track.name == "施法者") director.SetGenericBinding(track, 当前角色的Animator);

    }

    director.Play();

     

    需要引用 UnityEngine.Playables 和 UnityEngine.Timeline 两个命名空间。轨道名是你在 Timeline 窗口里自己起的,起个好认的名字,代码里按名字找就行。

     

    另外几个配套的点:

     

    1 位置:怪物站的位置每次都不一样,特效和镜头最好不要写死世界坐标。可以把整套表现放在一个根节点下,播放前把根节点移到目标脚下;或者镜头用 Cinemachine 的虚拟相机,运行时把它的 Follow 和 LookAt 指向这次的目标

    2 伤害数字、受击这类「在某一帧要触发逻辑」的需求,可以用 Signal Track 打信号,在 Signal Receiver 里接收后调用你自己的伤害代码,这样表现和逻辑是分开的

     

    这样同一个技能 Timeline 对任何怪物都能复用,换的只是播放前绑上去的对象。

    还有-5条回复,点击查看
    你还没有登录,请先登录或注册!
发表回复
你还没有登录,请先 登录或 注册!