我需要设置一个在Unity上的2D游戏中翻转的动画。最好的方法是怎样做的?
我正在尝试类似这样的伪代码:
void FixedUpdate() {
if(lastSide!=currentSide)
flip();
}
void flip() {
if(lastSide == 1) // if is facing right
animator.SetTrigger("flipToLeft");
else if(lastSide == -1) // if is facing left
animator.SetTrigger("flipToRight");
this.player.transform.localScale = new Vector3(lastSide * -1, 1f, 1f);
}
这个“有效”,但是在开始动画的动画开始之前,精灵正在翻转。
答案 0 :(得分:0)
一种选择是硬编码你想要精灵翻转的点的延迟:
void FixedUpdate()
{
if(lastSide != currentSide)
StartCoroutine(Flip());
}
IEnumerator Flip()
{
if(lastSide == 1) // if is facing right
animator.SetTrigger("flipToLeft");
else if(lastSide == -1) //if is facing left
animator.SetTrigger("flipToRight");
yield return new WaitForSeconds(.5f); // delay before flipping sprite
transform.localScale = new Vector3(lastSide*-1,1f,1f);
}
如果您不想对时间进行硬编码,可以查看Animation Events,您可以直接从动画中调用函数。
答案 1 :(得分:-3)
您可以使用DoTween以简单的方式进行切换。