随手记录一下~
如图示:黑色平面是投影平面,白色球是空间某点,绿色球是白色球在平面上的投影点
using System.Collections;
using System.Collections.Generic;
using UnityEngine;
public class ProjPoint : MonoBehaviour {
public Transform Target;
public Transform ProjProxy;
public Vector3 Normal = Vector3.up;
void Update () {
var objWPos = transform.position;
var objLPos = Target.InverseTransformPoint(objWPos);
var dis = Vector3.Dot(objLPos, Normal);
var vecN = Normal * dis;
objLPos = objLPos - vecN;
ProjProxy.position = Target.TransformPoint(objLPos);
}
}
Target是目标平面,ProjProxy是投影点,Normal是平面在局部坐标中的法线。