其他分享
首页 > 其他分享> > Vector3.Slerp用于平滑转向

Vector3.Slerp用于平滑转向

作者:互联网

# 第1种写法:

Vector3.Slerp(v1, v2, percent)

using UnityEngine;

public class SmoothSetDirection : MonoBehaviour
{

    public Transform tf1;
    public Transform tf2;
    public float percentSpeed = 0.5f;
    public bool running = false;

    private float _percent;

    void Update()
    {
        if (running)
        {
            var v1 = tf1.position;
            var v2 = tf2.position;

            _percent += percentSpeed * Time.deltaTime;
            var percent = _percent;
            if (percent >= 1)
            {
                running = false;
                _percent = 0;
            }
            transform.forward = Vector3.Slerp(v1, v2, percent);
        }
    }
}

 

 

# 网上看到的另一种写法,试了下貌似有点问题

Vector3.Slerp(cur, v2, diffPercent)

unity中关于物体的旋转和朝向控制_夫人的泡泡鱼的博客-CSDN博客_unity物体朝向

using UnityEngine;

public class SmoothSetDirection : MonoBehaviour
{

    public Transform tf1;
    public Transform tf2;
    public float percentSpeed = 0.5f;
    public bool running = false;

    void OnEnable()
    {
        transform.forward = tf1.position;
    }

    void Update()
    {
        if (running)
        {
            var v1 = tf1.position;
            var v2 = tf2.position;

            var diffPercent = percentSpeed * Time.deltaTime;
            transform.forward = Vector3.Slerp(transform.forward, v2, diffPercent);
        }
    }
}

 

标签:Slerp,平滑,Vector3,percent,v2,var,tf1,public
来源: https://www.cnblogs.com/sailJs/p/16389240.html