• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Unity DOTween 物体移动到指定位置动图

武飞扬头像
Beginner琛
帮助3

物体运动的位移(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 情况 

  1.  
    [Header("点位1")]
  2.  
    [SerializeField]
  3.  
    private Transform point1;
  4.  
    [Header("点位2")]
  5.  
    [SerializeField]
  6.  
    private Transform point2;
  7.  
     
  8.  
    // Update is called once per frame
  9.  
    void Update()
  10.  
    {
  11.  
    if (Input.GetKeyDown(KeyCode.F))
  12.  
    {
  13.  
    transform.DOMove(point2.position, 2f);
  14.  
    }
  15.  
    if (Input.GetKeyDown(KeyCode.D))
  16.  
    {
  17.  
    transform.DOMove(point1.position, 2f);
  18.  
    }
  19.  
    }
学新通

 学新通

第三个参数为 true 的情况

  1.  
    void Update()
  2.  
    {
  3.  
    if (Input.GetKeyDown(KeyCode.F))
  4.  
    {
  5.  
    transform.DOMove(point2.position, 2f, true);
  6.  
    }
  7.  
    if (Input.GetKeyDown(KeyCode.D))
  8.  
    {
  9.  
    transform.DOMove(point1.position, 2f);
  10.  
    }
  11.  
    }

 注意看 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)

  1.  
    private void Update()
  2.  
    {
  3.  
    if (Input.GetKeyDown(KeyCode.F))
  4.  
    {
  5.  
    transform.DOMoveX(5f, 2f);
  6.  
    }
  7.  
    if (Input.GetKeyDown(KeyCode.D))
  8.  
    {
  9.  
    transform.DOMoveX(-7f, 2f);
  10.  
    }
  11.  
    }

学新通

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


3. DOBlendableMoveBy

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

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

byValue:物体位置的增量

duration:物体动画的运动时间

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

  1.  
    private void Update()
  2.  
    {
  3.  
    if (Input.GetKeyDown(KeyCode.F))
  4.  
    {
  5.  
    text1.text = "点击F";
  6.  
    transform.DOBlendableMoveBy(new Vector3(2, 0, 0), 1f);
  7.  
    transform.DOBlendableMoveBy(new Vector3(0, 0, 4), 1f);
  8.  
    }
  9.  
    if (Input.GetKeyDown(KeyCode.D))
  10.  
    {
  11.  
    text1.text = "点击D";
  12.  
    transform.DOBlendableMoveBy(new Vector3(-2, 0, 0), 1f);
  13.  
    transform.DOBlendableMoveBy(new Vector3(0, 4, 0), 1f);
  14.  
    }
  15.  
    }
学新通

学新通


4. DOJump

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

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

endValue:跳跃终点位置。

jumpPower:跳跃的强度。

numJumps:跳跃的次数。

duration:跳跃的持续时间

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

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

学新通


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 那么移动过程不是平滑移动,而是按照整数取值进行移动。

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

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

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfhckhk
系列文章
更多 icon
同类精品
更多 icon
继续加载