Unity3d 精灵在统一中反应迟钝

Unity3d 精灵在统一中反应迟钝,unity3d,animation,response,sprite,Unity3d,Animation,Response,Sprite,我正在尝试用Unity3D引擎开发一个游戏。我的游戏有一个主要角色,它有一个带有动画的2d精灵。但是,环境是3D的。实际上,你可以在这里看到: 这个问题也出现在视频中,当您向左移动并右转(或以其他方式)时,动画会突然发生变化,没有任何问题。但是,当您向左移动并向上或向下旋转时,动画更改的响应会很晚。我认为这可能是因为它等待动画完成,但为什么它不会发生在左右移动呢 我的朋友建议我使用右边的动画过渡面板,因为他还怀疑它会等到动画完成,但我甚至没有不同方向的行走和跑步动画之间的过渡 我怀疑我的正面布

我正在尝试用Unity3D引擎开发一个游戏。我的游戏有一个主要角色,它有一个带有动画的2d精灵。但是,环境是3D的。实际上,你可以在这里看到:

这个问题也出现在视频中,当您向左移动并右转(或以其他方式)时,动画会突然发生变化,没有任何问题。但是,当您向左移动并向上或向下旋转时,动画更改的响应会很晚。我认为这可能是因为它等待动画完成,但为什么它不会发生在左右移动呢

我的朋友建议我使用右边的动画过渡面板,因为他还怀疑它会等到动画完成,但我甚至没有不同方向的行走和跑步动画之间的过渡

我怀疑我的正面布尔人不能正常工作,所以我在这里设置它:

void Movement()
{
anim.SetFloat("horizontalspeed", Input.GetAxis ("Horizontal"));
anim.SetFloat("verticalspeed", Input.GetAxis ("Vertical"));

if(Input.GetKey(KeyCode.D))
{
if(anim.GetBool ("facingRight") != true)
{
anim.SetBool ("facingRight", true);
}
else
{
anim.SetBool ("facingRight", false);
}
}
if(Input.GetKey(KeyCode.A))
{
if(anim.GetBool ("facingLeft") != true)
{
anim.SetBool ("facingLeft", true);
}
else
{
anim.SetBool ("facingLeft", false);
}
}
if(Input.GetKey(KeyCode.W))
{
if(anim.GetBool ("facingUp") != true)
{
anim.SetBool ("facingUp", true);
}
else
{
anim.SetBool ("facingUp", false);
}
}
if(Input.GetKey(KeyCode.S))
{
if(anim.GetBool ("facingDown") != true)
{
anim.SetBool ("facingDown", true);
}
else
{
anim.SetBool ("facingDown", false);
}
}
else
{
anim.SetBool ("facingRight", true);
anim.SetBool ("facingLeft", true);
anim.SetBool ("facingUp", true);
anim.SetBool ("facingDown", true);
}
}

请帮我解决我的noobish问题。我将不胜感激。

如果您同时按下两个键(对角键),您可以得到两种状态。(例如,向上和向左) 如果同时按住所有键,看起来您可能能够实现所有4个方向! 因此,根据您选择播放动画的方式,它可能会停留在错误的动画上

e、 g.如果你同时按住左键和上键。。。它可能会优先考虑剩下的


希望你在每次游戏更新中都能更新你的动作。(尽可能快)

根据这段代码,无论我朝哪个方向走,它总是选择为我按下的第一个方向设置动画。当我举起手然后向左时,角色向左移动,动画向上移动。当我按住左键然后向上时,角色再次向左移动,但动画向左移动。同时按住两个或三个按钮几乎没有问题。我的问题是,游戏在播放下一个动画之前,会多播放一个动画0.5。它只发生在对角线的变化中。即使我单独按下按钮。顺便说一句,在“更新是”中调用了“移动”功能。如果只有一个延迟,但您的角色始终以正确的动画结束,那么这听起来可能是您的动画制作者的一个问题。