Sprite面临在Unity中迟到的响应

时间:2014-01-22 00:59:30

标签: unity3d animation response sprite

我正在尝试在Unity3D引擎中开发游戏。我的游戏主角有2d精灵和动画。然而,环境是3D。你可以在这里看到它:

http://www.youtube.com/watch?v=jhT_PniyySY

视频中也存在问题,当您向左移动并向右转(或其他方向)时,动画会突然改变而没有任何问题。但是当你向左移动并向上或向下转动时,动画的变化反应迟了。我认为这可能是因为它等待动画完成,但为什么它不会发生在左右运动呢?

我的朋友建议我在右边使用动画过渡面板,因为他还怀疑它等到动画结束,但我甚至没有在不同方向的步行和运行动画之间进行过渡。

我怀疑我面对的布尔无法正常工作所以我在这里设置它:

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);
}
}

请帮我解决我的无聊问题。我非常感激。

1 个答案:

答案 0 :(得分:0)

如果你按下两个键(对角线),你最终可以得到2个状态。 (例如,向上和向左) 看起来如果同时按住所有键,你可能能够获得所有4个方向! 因此,根据您选择动画的方式,它可能会保持错误的动画。

e.g。如果你左右两边都持有...它可能会优先考虑剩下的。

希望您每场比赛更新您的动作。 (尽快)