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);
        }
    }
}
复制代码

 

posted @   yanghui01  阅读(398)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
点击右上角即可分享
微信分享提示