我有一个使用 android 2d 图形绘制的旋转弧
c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);
游戏运行时弧线会旋转,
我想知道如何检测是否有其他游戏对象(矩形、圆圈)与它发生碰撞?
这是我第一次写游戏:)
我在http://hakim.se/experiments/html5/core/01/看到了类似的东西
提前致谢
我有一个使用 android 2d 图形绘制的旋转弧
c.drawArc(new RectF(50, 50, 250, 250), 30, 270, true, paint);
游戏运行时弧线会旋转,
我想知道如何检测是否有其他游戏对象(矩形、圆圈)与它发生碰撞?
这是我第一次写游戏:)
我在http://hakim.se/experiments/html5/core/01/看到了类似的东西
提前致谢
弧碰撞比普通碰撞稍微难一些,但使用布尔代数可以轻松检查给定点是否在弧内。
看看下面的图片。
这里有 3 个对象。黑色球体,这可视化了你的弧线,如果有东西与它碰撞,它可能在你的弧线内。黑色球体顶部的红色球体,这可视化了弧的“内部”,如果有东西在红色球体内,它肯定不在弧的“内部”。现在还有一个绿色三角形可以可视化你的弧的“截止”,绿色三角形内的任何东西也肯定不在你的弧内。
测试黑色球体内是否有东西很容易。(物体到球心的距离 <= 球体半径)。红色球体也是如此。绿色三角形有点棘手,您首先必须构建它。找到弧的开始和结束弧度。并以起始弧度旋转单位向量。然后通过结束弧度旋转单位向量。将这两个向量都延长 2 * 黑色球体的半径。现在使用弧的中心点和两个向量的位置,并将中心位置添加为三角形的 3 个点。然后,您可以使用点三角形碰撞求解器之一:http: //www.bing.com/search? q=point+triangle+collision&go=&form=QBLH&scope=web
所以请记住:与弧碰撞=(与黑色球体碰撞)&&!(与红色球体碰撞)&&!(与绿色三角形碰撞)。