Unity3d 什么';物理2D.OverlapPoint和物理Raycast的区别是什么?

Unity3d 什么';物理2D.OverlapPoint和物理Raycast的区别是什么?,unity3d,Unity3d,我一直在寻找检测点击游戏对象的选项。对于2D游戏,Physics2D.OverlapPoint和Physics.Raycast之间有什么区别?一个比另一个有什么优势吗,也许是性能?两个精灵的返回值相同,而且两个精灵的重叠问题似乎相同。我一直倾向于使用物理学。Raycast因为我将来可能想将3D转换为自上而下的透视图,还有其他考虑吗?重叠点基本上是一个Raycast,除了没有深度。如果您计划在将来使用3D,那么使用Raycast是正确的。此外,返回值也不同,其中Raycast返回一个bool和Ov

我一直在寻找检测点击游戏对象的选项。对于2D游戏,Physics2D.OverlapPoint和Physics.Raycast之间有什么区别?一个比另一个有什么优势吗,也许是性能?两个精灵的返回值相同,而且两个精灵的重叠问题似乎相同。我一直倾向于使用物理学。Raycast因为我将来可能想将3D转换为自上而下的透视图,还有其他考虑吗?

重叠点
基本上是一个
Raycast
,除了没有深度。如果您计划在将来使用3D,那么使用
Raycast
是正确的。此外,返回值也不同,其中
Raycast
返回一个
bool
OverlapPoint
返回一个
Collider2D
OverlapPoint
检查碰撞器是否与空间中的给定点重叠,而
Raycast
沿特定向量发射光线并返回它击中的任何东西


非常不同的概念,不能互换使用。。。即使是2D。可以从2D场景之外开始发射
光线投射
,然后朝着查看器(由方向向量定义)或在场景前面发射,然后远离查看器发射。不同的结果将被返回,因为根据z顺序,光线将击中不同的碰撞器

一幅画抵得上1000字:

以下是光线投射:

这里是OverlapPoint,它检查碰撞器是否与空间中的点重叠


感谢您的回复,因此,就成本(CPU)而言,它们都是相同的?我可以想象,
OverlapPoint
会快得多,因为
Raycasts
有时会有点多,而且
Raycasts
可以在大量不同的指向方向和长度上进行计算,然而,
OverlapPoint
只是在2d空间中取一个点,然后查看是否有另一个
2DCollider
截取它,就像
Rect.Contains(…)
任何人都有关于2d的性能指标吗?哈哈。。我喜欢重叠点的图片。你刚刚画的,不是吗?;-)这是一个很难“画”的,尽管我同意。