- transform.DOLocalMove(),这个local指本地坐标,其实就是相对于父对象的坐标系,所以,如果你没有父对象,那么,DoMove和DoLocalMove应该是同样的效果。
- transform.DOMove(Vector3.one, 2).From(true);在这里,From的效果,是从Vector3.one位置移动到原位置。
- transform.DOMove(Vector3.one, 2).SetRelative(true);在这里,SetRelative的效果,是从原位置移动一个Vector3.one位移,这是相对位移,不是移动到绝对位置点。
Sequence.Append(g2.transform.DOMove(new Vector3(0.2f, 0.2f, 0), 1f).SetRelative());
Sequence.Append(g2.transform.DOMove(new Vector3(0.2f, 0.2f, 0), 1f)).SetRelative();
- 注意上面二者的不同,第一个SetRelative()是设置的DoMove的,第二个SetRelative()是设置的Sequence的,如果设置DoMove就只会影响这一个动画,如果设置Sequence的话,后面所有Append的动画全部会受影响。这个非常容易犯错,还很难发现。
DOTween Path组件
- 该组件一定要放在子物体里,然后勾选Local Movement,然后doTweenPath.DORestart(true);这样用restart能够每次都从头播放。如果放在父物体里,则会在原点播放动画,而不会随新建的物体而变化位置。
小结:关于DoTween放父物体还是子物体
- 如果是做世界坐标运动,绝对的运动就放父物体。
- 如果是做自身运动,相对运动,局部运动就放子物体。
- 另外,如果做相对运动了,为了collider也随运动变化,collider也要放在子物体上。