1. 程式人生 > >Unity 一條線在另一條線的投影

Unity 一條線在另一條線的投影

不知道,大家有沒有對 Unity的座標 和 向量的關係 產生 過疑問?

其實他的座標就是向量,

這張圖裡面就有四個點 Zero, P0,P1 和 P2,  他們的關係相信大家都知道, 三角型法則, 兩個向量相加等於 第三個向量。 所以  Vercter(Zer0, P0) = Vercter(p0, p1) + Vercter(Zero, P1 ), 其他的關係 以此類推。

昨天上午需要一個功能 求一條線 在另外一天線上的 一個點:


這條綠色的線就是我要求的點;

<span style="font-size:24px;">using UnityEngine;
using System.Collections;

public class LineProcess : MonoBehaviour {

    public Transform p1, p2;
    public Transform p0;
    public Transform pZero;
    public Vector3 V1, V2;
    public Vector3 Vproject;
    public Vector3 VHor;

    // Use this for initialization
    void Start () {
 
	
	}
	
	// Update is called once per frame
	void Update () {
        V1  = p0.position - p1.position;
        V2  = p2.position - p1.position;

        Debug.DrawLine( pZero.position,  p0.position, Color.magenta );
        Debug.DrawLine( pZero.position,  p1.position, Color.magenta );
        Debug.DrawLine( pZero.position,  p2.position, Color.magenta );


        Debug.DrawLine(p0.position, p1.position, Color.blue);
        Debug.DrawLine(p1.position, p2.position, Color.gray);
        Debug.DrawLine(p2.position, p0.position, Color.yellow);


        Vproject = Vector3.Project( V1, V2 );
        VHor     = Vproject - V1 ;

   

        Debug.DrawLine(p0.position, VHor+ p0.position, Color.green);

    }
}
</span>