在一个动画片段中更改多个精灵
Change multiple sprite in one animation clip
假设我有两个动画片段,idle 和 action;和两个 spritesheet,一个男孩和一个标志。我想要男孩和签名精灵从同一个动画剪辑中动画化,因为我已经为此制作了单独的精灵。这是标志精灵表
这是男孩 spritesheet
我希望我的动画剪辑包含两个像这样的动画精灵
我不想做两个动画师(boy 和 sign),因为我的动画师太复杂了,做两个会花很长时间。谢谢
ps。抱歉英语不是我的母语:)
如果这就是您想要的方式,那么最简单的方法就是使用图像编辑器,例如 Photoshop 或 GIMP。您可以剪切并粘贴男孩并登录到具有透明背景的新共享图像。有很多教程很容易找到如何做到这一点;因为它不属于编码领域,所以我不会进一步详细说明,但只要确保一切都完美排列,你应该没有困难。
您只需将一系列图像拖到 "hierarchy" window 即可创建动画,如:boyChips0001.png boyChips0002.png boyChips0003.png
执行此操作时,Unity 会自动创建一个新的 GameObject,其中附加了 "Animator Controller" 和 "Animation"。
如果需要,您可以删除游戏对象和动画控制器,重要的是动画,扩展名为“.anim”。
您可以根据需要在同一个 way.when 中创建任意数量的文件“.anim”,是时候 link 到您的对象了。为此,通过在检查器中按 "Add component" 按钮并键入 "Animator".
添加一个新的 "Animator"
然后,创建一个控制器 Animator,点击 "project" window 上的 "create" 按钮并选择 "Animator controller"
现在,将动画师控制器分配给动画师。
打开 Animator window 选择菜单 "window/Animator" 并选择 Animator 控制器或双击其 Animator 控制器
最后将您创建的动画拖放到此动画师 window
现在,您的动画已准备好供脚本使用。例如,当用户点击 space 栏时,动画之间的下一个代码循环:
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]);
}
}
}
注意:动画游戏对象必须有一个 Sprite Renderer 组件。如果没有,则看不到动画:
所以我已经想通了。我所要做的就是使用 lateupdate 函数并使 "sign" 对象跟随 "boy" 对象,然后在 "sign" 对象
中制作简单的动画
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);
}
假设我有两个动画片段,idle 和 action;和两个 spritesheet,一个男孩和一个标志。我想要男孩和签名精灵从同一个动画剪辑中动画化,因为我已经为此制作了单独的精灵。这是标志精灵表
这是男孩 spritesheet
我希望我的动画剪辑包含两个像这样的动画精灵
我不想做两个动画师(boy 和 sign),因为我的动画师太复杂了,做两个会花很长时间。谢谢
ps。抱歉英语不是我的母语:)
如果这就是您想要的方式,那么最简单的方法就是使用图像编辑器,例如 Photoshop 或 GIMP。您可以剪切并粘贴男孩并登录到具有透明背景的新共享图像。有很多教程很容易找到如何做到这一点;因为它不属于编码领域,所以我不会进一步详细说明,但只要确保一切都完美排列,你应该没有困难。
您只需将一系列图像拖到 "hierarchy" window 即可创建动画,如:boyChips0001.png boyChips0002.png boyChips0003.png
执行此操作时,Unity 会自动创建一个新的 GameObject,其中附加了 "Animator Controller" 和 "Animation"。
如果需要,您可以删除游戏对象和动画控制器,重要的是动画,扩展名为“.anim”。
您可以根据需要在同一个 way.when 中创建任意数量的文件“.anim”,是时候 link 到您的对象了。为此,通过在检查器中按 "Add component" 按钮并键入 "Animator".
添加一个新的 "Animator"然后,创建一个控制器 Animator,点击 "project" window 上的 "create" 按钮并选择 "Animator controller"
现在,将动画师控制器分配给动画师。
打开 Animator window 选择菜单 "window/Animator" 并选择 Animator 控制器或双击其 Animator 控制器
最后将您创建的动画拖放到此动画师 window
现在,您的动画已准备好供脚本使用。例如,当用户点击 space 栏时,动画之间的下一个代码循环:
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]);
}
}
}
注意:动画游戏对象必须有一个 Sprite Renderer 组件。如果没有,则看不到动画:
所以我已经想通了。我所要做的就是使用 lateupdate 函数并使 "sign" 对象跟随 "boy" 对象,然后在 "sign" 对象
中制作简单的动画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);
}