Unity DOTween 物体移动到指定位置(动图解析)
物体运动的位移(Transform.Position方面的拓展)
目录
物体运动的位移(Transform.Position方面的拓展)
在世界坐标系下改变(相当于改变transform.position)
第三个参数默认为 false 情况 (true情况同DOMove)
在局部坐标系下改变(相当于改变transform.localPosition)
2. DOLocalMoveX/DOLocalMoveY/DOLocalMoveZ
在世界坐标系下改变(相当于改变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)
标号与上面的相对应