用框架方式检测碰撞需要的计算量小,并且不需要制作模板,但是存在误差。
可以通过颜色检测精确的判断出两个非规则形体是否发生了碰撞。 用颜色碰撞常常用于地图的碰撞检测,原理首先将地图用图像软件进行处理,制作出对应的地图蒙版,地图蒙版由黑白两种颜色组成,发生碰撞的部分用黑色绘出。
算法思想:
首先得到被碰撞物体的具体位置,然后在蒙版中对应的位置获取与被碰物体同样大小的图像,将从蒙版中得到的图像与被捧物体图像在映射过程中执行与操作,最后检测合成后的图像,如果发现其包含蒙版中碰撞部分的颜色,则碰撞发生。
运行结果:
源代码:
#include <windows.h>
#pragma comment(lib, "winmm.lib") //调用PlaySound函数所需库文件t
#define WINDOW_WIDTH 800
#define WINDOW_HEIGHT 300
#define WINDOW_TITLE L"【游戏程序设计】颜色碰撞检测"
HINSTANCE hInst;
HDC hdc, mdc, bufdc, mdc2;
HBITMAP hcar, hforest, hmask, hdark; //dark为检测图像句柄
unsigned char *px; //保存原图像像素信息
int x,