unity2D 在没有input的情况下移动

我想知道unity2d要如何在没有input的情况下,移动到不同的几个特定的位置,在移动的过程中还需要动画相应的变化

  if((Vector2) transform.position != positions[index])
        {
            moveTest();
        }
        else 
        {
            index = ++index % positions.Length;
        }
 void moveTest()
    {
        transform.position = Vector2.MoveTowards((Vector2)transform.position, positions[index], speed * Time.deltaTime);
    }

我已经解决了移动的问题,但新的问题就是我要如何解决动画跟着变化

我有4段动画,开头就是向右然后向上,我尝试过if-else,只有在向右->向上这个过程成功了,之后就会疯狂抽搐,sprite来回旋转

我就希望有哪位大手子能提供一下思路。

估计是计算误差累加的问题,你把

if ((Vector2)transform.position != positions[index])

替换成

if (Vector2.Distance((Vector2)transform.position, positions[index]) > 0.1)

也可以不使用移动代码,直接手拖一个动画出来,毕竟你的需求是移动到特定的位置

img


给末尾加一个帧事件,让物体停留在最后一帧的位置,然后动画不要勾Loop

可以看一下DoTween 的 Insert 同时播放移动和动画

看一下判断的逻辑,是不是判断重叠了或者是进入死循环了