【游戏程序设计】颜色碰撞检测

本文介绍了在游戏开发中如何利用颜色碰撞检测实现精确的非规则形体碰撞。通过制作地图蒙版并进行图像处理,可以判断出碰撞是否发生。算法思路包括获取物体位置、在蒙版中提取相同大小的图像、执行与操作并检测合成图像中的碰撞颜色。
摘要由CSDN通过智能技术生成

    用框架方式检测碰撞需要的计算量小,并且不需要制作模板,但是存在误差。

    可以通过颜色检测精确的判断出两个非规则形体是否发生了碰撞。 用颜色碰撞常常用于地图的碰撞检测,原理首先将地图用图像软件进行处理,制作出对应的地图蒙版,地图蒙版由黑白两种颜色组成,发生碰撞的部分用黑色绘出。

算法思想:

首先得到被碰撞物体的具体位置,然后在蒙版中对应的位置获取与被碰物体同样大小的图像,将从蒙版中得到的图像与被捧物体图像在映射过程中执行与操作,最后检测合成后的图像,如果发现其包含蒙版中碰撞部分的颜色,则碰撞发生。

运行结果:

源代码:

#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, 
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值