如何防止新冲突绕过旧冲突?(2D) 我想用C++制作多边形的碰撞系统。有静态碰撞器(从不移动,不能推动)和动态碰撞器(可以移动,不能在静态碰撞器内)。 我目前的做法是: for(自动和动态:动态准直器){ 用于(自动和统计:静态碰撞器){ //dyn的任何顶点在统计中有多深?将其存储在t中。 //dyn是否在统计内(0后2行) //“有多深”是任何顶点的统计内的dyn?存储在r。 //Is stat inside dyn(0
这种单点碰撞检测方法(很遗憾)不起作用。因为它在碰撞发生的单点对每个对象进行建模,所以它没有考虑到对象可能也在其他地方发生碰撞,因此无法在尝试推动它的方向上移动或反弹 您需要使用您正在使用的任何检测系统检查它与之冲突的所有点,然后让您的冲突处理逻辑根据它可以进入的有效方向做出反应如何防止新冲突绕过旧冲突?(2D) 我想用C++制作多边形的碰撞系统。有静态碰撞器(从不移动,不能推动)和动态碰撞器(可以移动,不能在静态碰撞器内)。 我目前的做法是: for(自动和动态:动态准直器){ 用于(自动和统计:静态碰撞器){ //dyn的任何顶点在统计中有多深?将其存储在t中。 //dyn是否在统计内(0后2行) //“有多深”是任何顶点的统计内的dyn?存储在r。 //Is stat inside dyn(0,c++,2d,collision-detection,game-physics,C++,2d,Collision Detection,Game Physics,这种单点碰撞检测方法(很遗憾)不起作用。因为它在碰撞发生的单点对每个对象进行建模,所以它没有考虑到对象可能也在其他地方发生碰撞,因此无法在尝试推动它的方向上移动或反弹 您需要使用您正在使用的任何检测系统检查它与之冲突的所有点,然后让您的冲突处理逻辑根据它可以进入的有效方向做出反应 如果你还构建了检测系统(从你的问题听起来像是这样),那么你需要一个有效的算法来映射2D空间中可能的结点,你可能需要一个实现“强的最近的Sabtbor搜索。你可以找到很多C++库来为你做这个。 (请注意,kd树在每次插入
如果你还构建了检测系统(从你的问题听起来像是这样),那么你需要一个有效的算法来映射2D空间中可能的结点,你可能需要一个实现“强的最近的Sabtbor搜索<强”>。你可以找到很多C++库来为你做这个。
(请注意,kd树在每次插入和删除时都会失去平衡,因此您应该为移动点创建一个动态树,定期重新平衡,并为静态点创建一个静态树,可以单独使用)谢谢您的回答!我将尝试实现该系统。