OBB碰撞检测
creator的范例集合有案例
做同步对战游戏,引擎的物理碰撞不能用啊,只能自己写碰撞
我做的是帧同步对战游戏。creator案例的都用不了,那是creator自己提供的碰撞系统,在不同机器上帧率不同,浮点数精度也不同,根本不能用,只能自己写碰撞系统
这个是两个矩形角度固定是0的碰撞检测,我用几何算法也能算得出交集。我说的是两个矩形不同角度,比如一个45度,一个120度,判断两个矩形是否相交。场景里的角色总不可能不用转身
可以判断一个矩形的顶点是否在另一个矩形里判断是否相交
判断一个点 是否 在有旋转角度矩形中,麻烦
两个相同大小的正方形,位置一样,一个0度,一个45度,刚好组成正8角星,没有谁的任何一个顶点在另一个正方形内,这个算法不是绝对正确
做cocos引擎的大佬,你们应该知道如何实现有旋转角度的矩形的碰撞检查,因为cocos引擎的的碰撞系统就是各种不同角度的碰撞图形间做碰撞检测的。你们能否分享一下算法
做实时检测一般都是顶点先碰撞,除非物体速度太大
用两个矩形的四个顶点 分别判断是否与另一个矩形相交
先判断一下中心点距离
可以考虑下奇偶穿边算法额,
两个多边形啊,判断两个多边形是否相交
cc.Intersection.polygonPolygon(a: Vec2[], b: Vec2[]): boolean;
对于你说的旋转矩形碰撞,不管是碰撞系统还是物理引擎,实现原理都是obb算法,俗称分离轴投影算法,你网上查一下会有很多资料的,只是如果想把这一块做完善了,还需要有一些策略保证效率问题,因为obb还是比较消耗性能的,特别是物理系统下,每个物理帧都要跑这个算法,所以通常会做包围盒,然后用包围盒计算aabb,任何刚体先用包围盒aabb判断一次,通过判断了才会用obb二次判断,这样提升效率。当然了,如果你不是写物理系统不需要每个物理帧判断,只是想普通的判断一次,不考虑效率,那也可以用辅助类Intersection里提供的多边形相交计算,这里面都是用判断边与边相交的方法计算的,不太适用高频判断的物理引擎,但是做单次判断还是很有效的
多谢,最近在看obb算法原理
已知是矩形,已知旋转角,算相交很简单吧