Unity DOTween 物体移动到指定位置(动图解析)

物体运动的位移(Transform.Position方面的拓展)

目录

物体运动的位移(Transform.Position方面的拓展)

在世界坐标系下改变(相当于改变transform.position)

1. DOMove

第三个参数默认为 false 情况 

第三个参数为 true 的情况

2. DOMoveX/DOMoveY/DOMoveZ

第三个参数默认为 false 情况 (true情况同DOMove)

3. DOBlendableMoveBy

4. DOJump

5. DOPunchPosition

elasticity的值等于 0 时

elasticity的值等于 1 时 ​

 6. DOShakePosition

fadeOut为True

fadeOut为False

在局部坐标系下改变(相当于改变transform.localPosition)

1. DOLocalMove

2. DOLocalMoveX/DOLocalMoveY/DOLocalMoveZ

3. DOBlendableLocalMoveBy

4. DOLocalJump


在世界坐标系下改变(相当于改变transform.position)

1. DOMove

  •  移动物体沿直线运动到指定位置。

 DOMove( Vector3 endValue, float duration, bool snapping = false);

endValue:需要物体移动到的终点位置。

duration:物体动画的运动时间。

snapping:如果设置为 true 那么移动过程不是平滑移动,而是按照整数取值进行移动。

第三个参数默认为 false 情况 

    [Header("点位1")]
    [SerializeField]
    private Transform point1;
    [Header("点位2")]
    [SerializeField]
    private Transform point2;

    // Update is called once per frame
    void Update()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            transform.DOMove(point2.position, 2f);
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            transform.DOMove(point1.position, 2f);
        }
    }

 

第三个参数为 true 的情况

    void Update()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            transform.DOMove(point2.position, 2f, true);
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            transform.DOMove(point1.position, 2f);
        }
    }

 注意看 Position 的变化


2. DOMoveX/DOMoveY/DOMoveZ

  • 移动物体沿着X/Y/Z方向运动到指定位置。

DOMoveX 为例子。

DOMoveX(float endValue, float duration, bool snapping = false);

endValue:需要物体改变的X轴的终点位置(Y坐标和Z坐标保持不变)。

duration:物体动画的运动时间。

snapping:如果设置为 true 那么移动过程不是平滑移动,而是按照整数取值进行移动。

第三个参数默认为 false 情况 (true情况同DOMove)

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            transform.DOMoveX(5f, 2f);
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            transform.DOMoveX(-7f, 2f);
        }
    }

 DOMoveY/DOMoveZ :分别对物体的Y轴和Z轴进行运动


3. DOBlendableMoveBy

  • 物体沿直线运动到指定位置
  • 物体移动的终点 = 物体起始位置 + byValue 的值。
  • 多个DOBlendaleMoveBy可以协同运行(本例子中两个此方法协同运行)

DOBlendableMoveBy(Vector3 byValue, float duration, bool snapping = false);

byValue:物体位置的增量

duration:物体动画的运动时间

snapping:如果设置为 true 那么移动过程不是平滑移动,而是按照整数取值进行移动。

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            text1.text = "点击F";
            transform.DOBlendableMoveBy(new Vector3(2, 0, 0), 1f);
            transform.DOBlendableMoveBy(new Vector3(0, 0, 4), 1f);
        }
        if (Input.GetKeyDown(KeyCode.D))
        {
            text1.text = "点击D";
            transform.DOBlendableMoveBy(new Vector3(-2, 0, 0), 1f);
            transform.DOBlendableMoveBy(new Vector3(0, 4, 0), 1f);
        }
    }


4. DOJump

  • 向终点位置进行跳跃(方向为起点位置到endValue的矢量)

DOJump(Vector3 endValue, float jumpPower, int numJumps, float duration, bool snapping = false)

endValue:跳跃终点位置。

jumpPower:跳跃的强度。

numJumps:跳跃的次数。

duration:跳跃的持续时间

snapping:如果设置为 true 那么移动过程不是平滑移动,而是按照整数取值进行移动。

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            text1.text = "点击F";
            transform.DOJump(new Vector3(2, 1, 1), 3, 3, 2);
        }
    }


5. DOPunchPosition

  • 物体向终点多次往返运动
  • 物体振动终点 = 物体起始位置 + pubch 的值。

DOPunchPosition(Vector3 punch, float duration, int vibrato = 10, float elasticity = 1, bool snapping = false);

punch:物体运动的增量。

duration:物体运动时间。

vibrato:物体振动幅度

elasticity:等于 0 时,在起点和终点间往返运动

                 等于 1 时 ,在终点和起点到终点的反方向的一段距离间运动,最终停止在起点。

snapping:如果设置为 true 那么移动过程不是平滑移动,而是按照整数取值进行移动。

    private void Update()
    {
        if (Input.GetKeyDown(KeyCode.F))
        {
            text1.text = "点击F";
            transform.DOPunchPosition(new Vector3(6, 3, 3), 5, 2, 1);
        }
    }

elasticity的值等于 0 时

elasticity的值等于 1 时 


 6. DOShakePosition

  • 在范围内进行振动

DOShakePosition(float duration, float strength = 1, int vibrato = 10, float randomness = 90, bool snapping = false, bool fadeOut = true);

duration:物体运动时间。

strength:振动的强度。

vibrato:震动幅度。

randomness:振动的随机性(可输入0 - 180)

                        官方告示:大于90可能效果糟糕。

snapping:如果设置为 true 那么移动过程不是平滑移动,而是按照整数取值进行移动。

fadeOut:如果是真则会平稳的缓动退出。

fadeOut为True

fadeOut为False


在局部坐标系下改变(相当于改变transform.localPosition)

标号与上面的相对应

1. DOLocalMove

2. DOLocalMoveX/DOLocalMoveY/DOLocalMoveZ

3. DOBlendableLocalMoveBy

4. DOLocalJump