WhiteEngine-专注图形渲染与游戏引擎技术的网站

新浪微薄腾讯微薄

最新碎语:暂无碎语

您的位置:WhiteEngine-专注图形渲染与游戏引擎技术的网站 >C#与Lua> 获得两点之间按距离计算的任意点

获得两点之间按距离计算的任意点

using UnityEngine;
using System.Collections;

/// <summary>
/// 下面这个类是将一个transfrom对象移动到目标点(100,0,100)位置
/// 主要的方法GetBetweenPoint,能够获取起始点和终点之间都由起始点朝向终点都distance距离点
/// </summary>
public class Main : MonoBehaviour 
{
    private Vector3 target = new Vector3(100, 0, 100);
    private int count = 0;
// Use this for initialization
void Start ()
    {

}

// Update is called once per frame
void Update ()
    {
        if (Vector3.Distance(transform.position, target) > 0.1f)
        {
            transform.position = GetBetweenPoint(transform.position, target, 0.1f);
        }
        else
        {
            transform.position = target;
        }
}

    /// <summary>
    /// 获取两点之间的一个点,在方法中进行了向量的减法,以及乘法运算
    /// </summary>
    /// <param name="start">起始点</param>
    /// <param name="end">结束点</param>
    /// <param name="distance">距离</param>
    /// <returns></returns>
    private Vector3 GetBetweenPoint(Vector3 start, Vector3 end, float distance)
    {
        Vector3 normal = (end - start).normalized;
        return normal * distance + start;
    }

}


using UnityEngine;
using System.Collections;

/// <summary>
/// 这个类和上面都类功能是相同都,都是从当前坐标移动到目标坐标点,只是向量的计算方式不一样,这种方式是向量的加法运算
/// </summary>
public class Main : MonoBehaviour 
{
    private Vector3 target = new Vector3(100,0,100);
    private Vector3 normal;
// Use this for initialization
void Start () 
    {
    //向量的减法运算
        normal = (target - transform.position).normalized;
}

// Update is called once per frame
void Update ()
    {
        if (Vector3.Distance(transform.position, target) > 0.1)
        {
            //向量的加法运算
            transform.position = transform.position + normal * 0.1f;
        }
        else
        {
            transform.position = target;
        }
}
}

---

转载请注明本文标题和链接:《获得两点之间按距离计算的任意点

分享到:

发表评论

路人甲 表情
看不清楚?点图切换 Ctrl+Enter快速提交