Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/149.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何防止新冲突绕过旧冲突?(2D) 我想用C++制作多边形的碰撞系统。有静态碰撞器(从不移动,不能推动)和动态碰撞器(可以移动,不能在静态碰撞器内)。 我目前的做法是: for(自动和动态:动态准直器){ 用于(自动和统计:静态碰撞器){ //dyn的任何顶点在统计中有多深?将其存储在t中。 //dyn是否在统计内(0后2行) //“有多深”是任何顶点的统计内的dyn?存储在r。 //Is stat inside dyn(0_C++_2d_Collision Detection_Game Physics - Fatal编程技术网

如何防止新冲突绕过旧冲突?(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树在每次插入和删除时都会失去平衡,因此您应该为移动点创建一个动态树,定期重新平衡,并为静态点创建一个静态树,可以单独使用)

谢谢您的回答!我将尝试实现该系统。