我有一个玩家的2d平台游戏。玩家默认精灵设置为空闲。总共有4个精灵和状态 - >闲置,跳跃,左,右。
我试图让玩家根据他们的行为切换精灵,例如跳跃或向右移动。
这是我第一次使用统一和动画师,所以我根本没有经验。
所以我的每个动画看起来都像这样。 1帧,每个州一个:
然后我打开了动画师:
我不太确定箭头做了什么,但我认为它像流程图,所以你从空闲到左边,所以我匹配箭头。然后我还为每个州制作了4个布尔值。
然后在附加到播放器的脚本上,我添加了以下代码:
private Animator animator;
void Start () {
animator = GetComponent<Animator>();
}
//This is in the update function
if (!playerLeft && !playerRight && !jumping)
{
setAnimationState("playerIdle");
}
else if (jumping)
{
setAnimationState("playerJumping");
}
}
private void setAnimationState(String state){
animator.SetBool("playerJumping", false);
animator.SetBool("playerLeft", false);
animator.SetBool("playerRight", false);
animator.SetBool("playerIdle", false);
animator.SetBool(state, true);
}
所以我创建了一个取消动画的功能,并将其切换到正确的动画。你可以看到我如何用跳跃来调用它,我也有左右相同但我知道它们都是从动画师中正确调用的。
在动画师中,只有正确的灰色框正在运行。我可以看到,因为它有一个蓝色条,它没有切换动画。布尔人正在转换,但就是这样。
答案 0 :(得分:0)
在我的头顶:
您需要从右到左,从左到右的过渡。 你需要一个从右,左和跳回到空闲。
您可以单击箭头并选择需要检查哪些布尔值以启用转换。
在每个动画状态之前,您需要上传spritesheet。您可以在动画选项卡中拖放它。动画将播放,直到没有更多的精灵。然后它将检查它是否可以转换到另一个状态或循环当前状态。 (注意你需要在每个状态上启用循环,除了跳跃,我猜?)
答案 1 :(得分:0)
欢迎来到Unity开发:)
我不想让这个太久,所以让我们以playerLeft为例。
因此,您已将空闲状态设置为默认状态 - 这意味着如果所有布尔值均为假,则播放器处于空闲状态。但是一旦按下左键,您就希望播放器从空闲状态转换到Left状态。
第一步是点击从空闲到playerLeft的转换(箭头)。
接下来,是添加 playerLeft 布尔值作为条件。这意味着当 playerLeft 布尔值变为true时,我们开始从空闲状态转换为左边。
最后,修补代码。当我们按下&#34; D&#34;我们需要告诉Unity将playerLeft设置为true。按钮例如。
Update()
{
if(Input.GetKeyDown(KeyCode.D))
animator.SetBool("playerLeft",true);
}
我们将它放在Update()方法中以确保它每帧都运行。然后,我们有一个条件,等待玩家按D.
此后还有很多工作要做,例如做返回过渡但是,当你走的时候,你会弄清楚其余部分,所以不要犹豫;)