前言 图形相交检测常常用在伤害判定,使用自定义的图形相交检测,可以在一定程度上控制性能。 比如2D格斗游戏中使用的矩形包围盒(AABB),一些动作游戏中常常出现的扇形攻击。 2D的图形相交检测能够满足大部分的需求,且可以拓展成为柱状的3D物体,2D比3D的计算复杂度会低很多,3D的图形检测原理与2D相似,本文会实现几个圆形与其他2D图形的相交检测: 通过简单化处理,把被判定物都处理成由圆柱或多个圆柱构成的区域,所以只需要考虑圆形与其他形状的相交。 圆形与圆形 两个圆形的相交检测非常简单直观,只需要判断半径只和与距离的大小。 定义圆形区间: 相交判断: 分离轴定理 分离轴定理(separating axis theorem, SAT)分离轴定理是指,两个不相交的凸集必然存在一个分离轴,使两个凸集在该轴上的投影是分离的。 判断两个形状是否相交,实际上是判断 分离轴 是否能把两个形状分离。若存在分离轴能使两个图形分离,则这两个图形是分离的。 基于以上理论,寻找分离轴是我们要做的工作,重新考虑两个圆形的相交检测,实际上我们做的是把圆心连线的方向作为分离轴: 上图中两图形的投影在分离轴上是分离的,存在分离线将两者隔开,于是我们可以断定两图形是分离的。 胶囊体的本质 定义一个线段 u,距离 d。胶囊体实际上是与线段 u 的最短距离小于 d 的点的集合。判断一个点 x 处于胶囊体内部