// 打开动画
void Open()
{
gameObject.SetActive(true);
left.transform.localPosition = new Vector3(-1275f - 383f,-60f,0f);
right.transform.localPosition = new Vector3(1275f + 370f, -60f, 0f);
top.transform.localPosition = new Vector3(-5f, 718f + 43f, 0f);
left.GetComponent<Transform>().DOLocalMoveX(-1275f + 383f, 2f);
right.GetComponent<Transform>().DOLocalMoveX(1275f - 370f, 2f);
top.GetComponent<Transform>().DOLocalMoveY(718f - 43f, 2f);
}
在Unity做位置移动动画时,运用的是向量的原理。
x轴向左移动减,向右移动加,y轴向上移动加,向下移动减。
1.设置了三个物体(left
、right
、top
)的初始本地位置,通过调整它们的 localPosition
属性来确定它们在局部坐标空间中的位置。
这些初始位置通常是在场景中看不到它们的位置,它们将在动画中移动到可见的位置。
注意在查看对象位置时,确保Anchor Presets为正确的设置。Anchor Presets是一种用于设置RectTransform锚点的工具。它们定义了UI元素与其父元素(通常是Canvas)之间的相对位置。
Canvas
的PosX值为1275
,PosY值为717
。
即:x轴上,-1275到1275为Canvas
的范围;
y轴上,-717到717为Canvas
的范围。
超出这两个范围,就是物体无法被看见的位置。
left
的PosX值为383,right
的PosX值为-370,top
的PosY值为-43,要做left
和right
的X轴移动动画和top
的Y轴移动动画,则它们三个无法被看见的位置分别为:
left
:(-1275-383)X 向左移动减
right
:(1275+370)X 向右移动加
top
:(717+43)Y 向上移动加
2.使用 DOLocalMoveX 和 DOLocalMoveY 方法来执行 DOTween 动画。这些方法用于在一定时间内对物体进行局部坐标的移动。
·left.GetComponent<Transform>().DOLocalMoveX(-1275f + 383f, 2f);
- 将 left 物体在 X 轴方向上移动到 -1275f + 383f 的位置,耗时 2 秒。
right.GetComponent<Transform>().DOLocalMoveX(1275f - 370f, 2f);
- 将 right 物体在 X 轴方向上移动到 1275f - 370f 的位置,耗时 2 秒。
`top.GetComponent<Transform>().DOLocalMoveY(718f - 43f, 2f); - 将 top 物体在 Y 轴方向上移动到 718f - 43f 的位置,耗时 2 秒。
这段代码的效果是,在调用 Open
方法后,游戏对象被激活,同时 left
、right
、top
这三个物体会以动画的形式从初始位置移动到指定的位置,形成一个开启的动画效果。