仅在图片框中与图像交叉

时间:2014-04-25 18:29:44

标签: c# image picturebox intersection

我正在创建一个游戏,我想检查图片框是否与矩形相交。我已经使用了.IntersectsWith(pbxPlayer.Bounds),但是图像的大部分区域是透明的,这意味着我的游戏中的命中检测并不是很好。有没有办法可以检查某些东西是否与图像中的像素相交而不是整个图片框?

1 个答案:

答案 0 :(得分:0)

像素完美的碰撞检测可能很慢,因此许多2D游戏选择使用像你一样已经完成的边界框。为了提高准确性,您可以使用多个边界对象(例如更多的方框,圆形或凸多边形),这些对象类似于位图中不透明区域的形状。

如果您仍想要像素完美的碰撞检测,则需要迭代交叉区域中的所有屏幕坐标(即两个边界框的矩形交叉点)。当在同一位置找到两个位图的不透明像素时,会检测到碰撞。

请注意,Bitmap.GetPixel方法速度很慢,可能不适合实时碰撞检测。您应该为每个位图创建一个仅代表不透明像素的遮罩,然后使用遮罩进行碰撞检测。掩码可以是布尔的简单2D数组,位图中每个像素的一个元素。