[工具笔记]1.UnityEngine.Plane

public struct Plane : IFormattable{}

Plane是存在于 3D 空间中,无限大的平坦表面,将空间划分为两半(称为半空间)。可方便地确定特定点处于两个半空间的哪一个中,以及确定该点与平面相距多远。

  • 此对象在unity并不可见,只是假设存在一个表面。
  • 法线矢量源自哪一侧十分重要,此表面会区分正面,法线指向方向是正面,法线反方向是反面。
  • 可以用于鼠标的射线定位点检测

构造函数

public Plane(Vector3 inNormal, Vector3 inPoint){}
public Plane(Vector3 inNormal, float d){}
public Plane(Vector3 a, Vector3 b, Vector3 c)

  • inNormal 生成平面的法线,必须是标准化矢量
  • d 距离原点的距离
  • inPoint 生成的位置
  • a,b,c生成的平面穿过给定的三个点。向下看着平面的上表面时,这些点呈顺时针顺序。

变量

distance

public float distance{get;set}

沿平面法线,从平面到原点的距离。

  • 这里是平面沿法线到原点的距离,这里的原点是世界(0,0,0)
  • 距离的正值是平面朝向原点。负距离值是平面背对原点。

flipped

public Plane flipped{get;}

返回朝向相反方向的平面

normal

public Vector3 normal{get;set;}

平面的法线向量

公共函数

ClosestPointOnPlane

public Vector3 ClosestPointOnPlane(Vector3 point){}

平面上最接近于point 的点

  • 沿法线投影到平面上的最近点

Flip

public void Flip(){}

反转平面

GetDistanceToPoint

public float GetDistanceToPoint(Vector3 point)

返回从平面到点的带符号距离。

GetSide

public bool GetSide(Vector3 point){}

点是否处于平面的正向?

  • 当与平面重合时返回flase

Raycast

public bool Raycast(Ray ray, out float enter){}

使射线与平面相交

  • enter为沿着射线,相对于射线与平面的相交处的距离。
  • 如果射线与平面平行,则函数返回 false 并将enter设置为零
  • 如果射线指向相反方向也就是是平面背面,则函数返回 false并将enter设置为沿着射线的距离为负数。
  • 可以通过ray.GetPoint(enter)获取相交于平面的点。

SameSide

public bool SameSide(Vector3 inPt0, Vector3 inPt1){}

两个点是否处于平面的相同侧?

Set3Points

public void Set3Points(Vector3 a, Vector3 b, Vector3 c){}

使用位于其中的三个点设置平面。向下看着平面的上表面时,这些点呈顺时针顺序。

SetNormalAndPosition

public void SetNormalAndPosition(Vector3 inNormal, Vector3 inPoint){}

使用位于其中的一个点设置平面,该点沿着法线以便确定其方向。

  • inNormal必须是标准化矢量

Translate

public void Translate(Vector3 translation){}

在空间中移动平面

静态函数

Translate

public static Plane Translate(Plane plane, Vector3 translation)

在空间中移动平面并返回

  • 会new一个新的Plane
  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值