Unity重复移动对象动画

时间:2018-04-03 11:29:08

标签: c# unity3d

我在Unity中制作跳棋游戏,并且我有一个棋子对象,其中有一个平铺移动动画(GameObject)。当我点击新位置时,会触发动画并移动动画。但在此之后,将此片移动到下一个瓷砖(新坐标)不起作用!

以下是该部分的代码!

 if(selectedPiece.ValidMove(pieces, x1, y1, x2, y2, hasKilled))
        {
            // Tile jump check
            if (Mathf.Abs (x2 - x1) == 1) {
                if(selectedPiece.isWhite)
                {
                    if(selectedPiece.transform.position.x < mouseOver.x)
                    {
                        // default 
                        selectedPiece.GetComponentInChildren<Animator>().SetTrigger("tileJump");   
                        selectedPiece.transform.GetChild(0).transform.position = Vector2.zero;                     
                        //pieces[x2, y2] = selectedPiece;
                        pieces[x1, y1] = null;                           
                        //MovePiece (selectedPiece, x2, y2);
                    }else{

                         selectedPiece.GetComponentInChildren<Animator>().SetTrigger("tileJump");    
                    }
                }
            }
        }

1 个答案:

答案 0 :(得分:0)

动画师的动画旨在是可循环播放的,因此当你再次播放动画时,它将始终返回到原来的位置。

一种解决方案是通过代码将对象的位置设置到预期位置,同时重置动画师。

所以

transform.position = yourCheckersIntededPosition;

如果您只希望棋盘对象在棋盘上滑动,您也可以在代码中执行此操作,而不是使用动画制作器对其进行动画制作,那么位置将始终为真实位置。