Unity小工具 姿态复制脚本——以骨骼动画关键帧跨动画复制为例

做骨骼动画动画时,想要让动画之间的过渡变得更好,
想做一个新的AnimationClip将两个动画先后衔接起来。

这里试了很久没法直接将两个不同动画间的关键帧进行复制,
就写了一个脚本帮忙直接在物体上复制姿态,然后可以更好的操作进行动画。

原理

原理就很简单,深度优先搜索遍历物体的儿子们,将被复制的和复制的两个物体所有儿子的Transform设置相同即可。
也可以自己改改,用来复制别的东西的参数。

脚本源代码

新建脚本复制进去即可,会自动编译

using System.Linq;
using UnityEngine;
using UnityEditor;
using System.Collections;
 using System.Collections.Generic;

public class CopyObjectPos : EditorWindow
{
    static GameObject copiedGO;
    [MenuItem("GameObject/MyTools/Copy Object Pos #&C")]
    static void Copy()
    {
        copiedGO = GameObject.Instantiate(Selection.activeGameObject);

    }
 
    [MenuItem("GameObject/MyTools/Paste Object Pos #&P")]
    static void Paste()
    {
        GameObject targetGO = Selection.activeGameObject;
        DFS(copiedGO.GetComponentsInChildren(), targetGO.GetComponentsInChildren());
        DestroyImmediate(copiedGO);
    }
    static void DFS(Transform[] copiedTf, Transform[] targetTf){
        for(int i=1;iUnity小工具 姿态复制脚本——以骨骼动画关键帧跨动画复制为例_第1张图片

选中复制命令
Unity小工具 姿态复制脚本——以骨骼动画关键帧跨动画复制为例_第2张图片

此时会有一个临时物体被复制出来
20220129141530

打开需要制作过渡的动画Clip,点小红圈开始录制
Unity小工具 姿态复制脚本——以骨骼动画关键帧跨动画复制为例_第3张图片

选中粘贴命令
Unity小工具 姿态复制脚本——以骨骼动画关键帧跨动画复制为例_第4张图片

复制完了
Unity小工具 姿态复制脚本——以骨骼动画关键帧跨动画复制为例_第5张图片

随后点击设置关键帧,将当前姿势设置为动画关键帧
Unity小工具 姿态复制脚本——以骨骼动画关键帧跨动画复制为例_第6张图片

你可能感兴趣的:(Unity学习笔记,unity,动画,游戏引擎)