Animation 在一个动画剪辑中更改多个精灵

Animation 在一个动画剪辑中更改多个精灵,animation,unity3d,2d,sprite,Animation,Unity3d,2d,Sprite,假设我有两个动画剪辑,空闲和动作;还有两张精神片,一个男孩和一块牌子。我想男孩和签名精灵动画从同一个动画剪辑,因为我已经作出了单独的精灵。这是标志精灵表 这是男孩精神片 我希望我的动画剪辑由两个像这样的动画精灵组成 我不想做两个动画师(男孩和符号),因为我的动画师太复杂了,做两个需要很长时间。谢谢 注:抱歉,英语不是我的母语:)如果你想这样做,那么最简单的方法就是使用Photoshop或GIMP等图像编辑器。您可以剪切并粘贴男孩,并将其签名到具有透明背景的新共享图像中。有很多教程很容易找到

假设我有两个动画剪辑,空闲和动作;还有两张精神片,一个男孩和一块牌子。我想男孩和签名精灵动画从同一个动画剪辑,因为我已经作出了单独的精灵。这是标志精灵表

这是男孩精神片

我希望我的动画剪辑由两个像这样的动画精灵组成

我不想做两个动画师(男孩和符号),因为我的动画师太复杂了,做两个需要很长时间。谢谢


注:抱歉,英语不是我的母语:)

如果你想这样做,那么最简单的方法就是使用Photoshop或GIMP等图像编辑器。您可以剪切并粘贴男孩,并将其签名到具有透明背景的新共享图像中。有很多教程很容易找到如何做到这一点;由于它不属于编码的范畴,我将不作进一步的阐述,但只要确保所有内容都完美地排列在一起,你就可以毫无困难地完成它。

你只需将一系列图像拖动到“层次”窗口即可创建动画,如:boychips001.png boychips002.png boychips003.png

当您这样做时,Unity将自动创建一个新的游戏对象,并附加一个“Animator控制器”和一个“动画”

如果需要,可以删除游戏对象和animator控制器,重要的是动画,扩展名为“.anim”

你可以用同样的方法创建你需要的任意多个文件“.anim”。当你有了所有你需要的,是时候链接到你的对象了。为此,请按Inspector中的“add component”(添加组件)按钮并键入“Animator”,添加一个新的“Animator”

然后,单击“项目”窗口上的“创建”按钮并选择“Animator controller”,创建一个控制器Animator

现在,将animator控制器指定给animator

打开“Animator”窗口,选择菜单“window/Animator”,选择Animator控制器或双击其Animator控制器

最后,将创建的动画拖放到此animator窗口

现在,脚本可以使用动画了。例如,当用户点击空格键时,动画之间的下一个代码周期:

public class TransitionScript : MonoBehaviour {

    public GameObject Globe;
    string[] AnimationName;
    private int currentAnimation;
    KeyCode key;
    // Use this for initialization
    void Start () {
        currentAnimation = 0;

        AnimationName = new string[3];
        AnimationName[0] = "Repose";
        AnimationName[1] = "Globe1 Animation";
        AnimationName[2] = "Glove2 Animation";
    }

    // Update is called once per frame
    void Update()
    {
        if(Input.GetKeyDown(KeyCode.Space))
        {
            print("space Down");
            Animator anim = Globe.GetComponent<Animator>();

            currentAnimation++;
            if (currentAnimation >= AnimationName.Length) currentAnimation = 0;
            anim.Play(AnimationName[currentAnimation]);

        }
    }
}
public类TransitionScript:MonoBehavior{
公共游戏对象;
字符串[]AnimationName;
私人动画;
键码键;
//用于初始化
无效开始(){
currentAnimation=0;
AnimationName=新字符串[3];
AnimationName[0]=“休息”;
AnimationName[1]=“Globe1动画”;
AnimationName[2]=“Glove2动画”;
}
//每帧调用一次更新
无效更新()
{
if(Input.GetKeyDown(KeyCode.Space))
{
打印(“空格向下”);

Animator anim=Globe.GetComponent所以我已经想好了。我所要做的就是使用lateupdate函数,使“sign”对象跟随“boy”对象,然后在“sign”对象中制作简单的动画


我想最简单的解决办法是合并两个精灵,然后使用一个动画师。这将节省您与两个动画师一起工作的时间。希望有帮助:)如何合并来自不同精灵表的两个精灵?使用一些图片编辑工具,如Photoshop
public Transform target;
public Transform sign;
public float xOffset;
public float zSignOffset;

void LateUpdate(){
    sign.transform.localPosition = new Vector3 (target.localPosition.x+ xOffset, transform.localPosition.y, target.localPosition.z+ zSignOffset);
}