我有一个简单的精灵表,我在Unity项目中使用:
它有四个方向的行走和站立的框架。我使用Unity的Sprite Editor剪切了图像,并为每个系列制作了一个单独的Animation
对象,所有这些对象都整齐地放在一个动画控制器中:
我已将动画控制器添加到我场景中Animator
的{{1}}组件上。这是我开始遇到麻烦的地方。 我不能为我的生活找出如何在代码中的动画之间进行更改。
答案 0 :(得分:1)
为什么甚至使用代码?只需使用参数将其全部挂在Animator中,然后根据需要更改参数。
答案 1 :(得分:1)
您不应该在脚本中创建动画之间的连接。你所做的就是在Animator中创建连接,并设置变量,如果你站着或走路,你要去哪个方向。然后你只需在脚本中编辑这些变量,Animator负责选择合适的动画。
此视频展示了它的实际效果:Example
(你看到了连接,左下角是他设置的变量)
快速google" mechanim 2d教程"给你:Tutorial
编辑:
评论太长了:)
基本上我要做的是创建2个变量,一个名为&#34的bool; Standing"和一个名为" Direction"的整数。然后,您从AnyState到您拥有的每个其他状态建立一个连接(右键单击AnyState以进行转换)。也许在AnyState周围排一圈。
在此之后,单击连接并在Inspector中通过选择" Standing"设置条件,然后再添加一个并将其设置为" Direction" "的Equals"和方向的数字。
然后在您的更新功能中的某个位置的脚本中,您可能会有以下内容:
private readonly int UP = 0;
...
if(speed.magnitude > 0.0f)
Animator.SetBool("Standing", false);
else
Animator.SetBool("Standing", true);
if( Condition for walking up? )
Animator.SetInteger("Direction", UP);
if( Condition for walking down? )
Animator.SetInteger("Direction", DOWN);
...
这可能不会直接起作用,但你明白了。您可能希望根据设置方式使用开关。
答案 2 :(得分:0)
Animator.CrossFade
功能将达到预期效果:
<强> C#:强>
Animator animator = this.GetComponent<Animator>();
animator.CrossFade("WizzyWalkDown", 0);
它可能看起来有些过分或反直觉,但请记住,AnimationController
类的构建是为了使动画之间的过渡变得容易。尽管如此,它仍然可以用于更简单的动画类型!