1 平面的定义
在数学里面,我们通常认为平面方程表现为:
Ax+By+Cz+D=0:
定义为与固定点(x0,y0,z0)的连线垂直于固定方向(A,B,C)的所有的点的集合(360百科)
有了这个概念后,我们就可以通过一个点+一个法线求得平面方程了:
2 在Unity中,遇到平面的情况:
比如:
我希望求得这五个点在该平面上的一个投影:
,这个时候,我们就需要平面的相关知识。
这个平面方程我们可以直接通过点法式获得:
哎,脑阔疼
所以,为了简便起见,我们用性能小霸王的射线来进行处理:
我们已经获得了法向量n(也就是红色线)
五个球分辨沿着n的反方向发射一条射线,并和平面发生碰撞,碰撞的交点,就是投影下来的点,然后,你就能拿到投影向量了:
核心代码:
Ray ray = new Ray(leftArm.transform.position, -n); //指定原点和方向
bool touch = Physics.Raycast(ray, out hit); //进行碰撞检测
当然,性能肯定是很糟糕的啦~