Unity 三维向量Vector3提供的有关物体移动的方法

                 需求:将当前物体移动到(0,0,10)

 

Lerp不是由快到慢,而是因为起点不断变化,移动终点固定,比例不变,所以移动现象由快到慢,

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestVector : MonoBehaviour
{

    //移动类API
    private void OnGUI()
    {
        if (GUILayout.RepeatButton("Lerp"))
        {
            //由快到慢      无限接近目标点
            //起点改变    终点、比例不变
            transform.position =
                Vector3.Lerp(transform.position, new Vector3(0, 0, 10), 0.1f);
        }

        if (GUILayout.RepeatButton("MoveTowards"))
        {
            //匀速    可以到达目标点 
            transform.position =
                Vector3.MoveTowards(transform.position, new Vector3(0, 0, 10), 0.1f);
        }

    }

}

  起点与终点固定,比例变化

   由动画曲线AnimationCurve控制物体变速运动

using System.Collections;
using System.Collections.Generic;
using UnityEngine;

public class TestVector : MonoBehaviour
{
  
    public AnimationCurve curve;//动画曲线
    private float x;
    //定义移动持续的时间,改变它控制移动的速度
    public float time = 1;

    //当前物体自然移动,一会儿快一会儿慢
    private void OnGUI()
    {

        if (GUILayout.RepeatButton("变速运动"))
        {
          //因为动画曲线取值最大为1,所以x加到1到终点
            x += Time.deltaTime / time;//除以time表示time秒到终点
            //由快到慢      无限接近目标点
            //起点 、终点 不变     比例改变
            Vector3 begin = Vector3.zero;
            //transform.position =
            //    Vector3.Lerp(begin, new Vector3(0, 0, 10), curve.Evaluate(x));
              // curve.Evaluate(x)返回Y值超过1,结果默认为1,移动也不会超过终点

            transform.position =
                        Vector3.LerpUnclamped(begin, new Vector3(0, 0, 10), curve.Evaluate(x));
      // curve.Evaluate(x)返回Y值超过1,移动会先超过终点然后再返回到终点
        }
  

}


}

 

 AnimationCurve介绍:

  curve.Evaluate(x)给一个X轴值,返回Y轴值

X和Y值匀速增加,代表的是匀速

Unity 三维向量Vector3提供的有关物体移动的方法_第1张图片

 X是匀速增加,Y是先慢后快

Unity 三维向量Vector3提供的有关物体移动的方法_第2张图片

 X是匀速增加,Y是先快后慢

Unity 三维向量Vector3提供的有关物体移动的方法_第3张图片

 X是匀速增加,Y是先慢后快然后匀速后逐渐变慢,这就是所谓的平滑的移动,自然移动

Unity 三维向量Vector3提供的有关物体移动的方法_第4张图片

也可以通过面板自己编辑然后通过代码读取面板上面的点

Unity 三维向量Vector3提供的有关物体移动的方法_第5张图片

Unity 三维向量Vector3提供的有关物体移动的方法_第6张图片

 

 

 

 

你可能感兴趣的:(Unity,3D数学)