横版过关游戏开发-碰撞检测

上回说哪了?碰撞检测。碰撞检测应该是所有事件的触发点。比如:人物下落的时候,落到地面上。程序实现就要不断地检测人物坐标和地面坐标,如果碰撞,则停止下落。还有其他情况:子弹碰到敌人,则敌人消失,并且显示一个子弹爆炸的画面;人物碰到金币,则累计金钱数量,显示一个小动画。

程序怎样实现:所有图形元素,都应该有一个外包图形,如点,圆,三角形,矩形。为了简单起见,这次,我都用了矩形。判断的时候,是用几个宏实现的:

//点与矩形碰撞

#define POINT_IN_RECT(x,y,x1,y1,w,h) ((y)>(y1) && (y)<(y1)+(h) /

                                    && (x)>(x1) && (x)<(x1)+(w))



//点在一个区间内

#define IN_AREA(x,x1,w) ( (x)>(x1) && (x)<(x1)+(w) )



//两个线段重叠

#define LINE_ON_LINE(x1,y1,w1,x2,y2,w2) ((y1)==(y2) /

					&& (x1)<(x2)+(w2) && (x1)>(x2)-(w1) )



//竖线与矩形碰撞

#define VLINE_IN_RECT(x,y,h,x1,y1,w1,h1) ( (y)+(h)>(y1) && (y)<(y1)+(h1) /

                                    && (x)>(x1) && (x)<(x1)+(w1) )



//横线与矩形碰撞

#define HLINE_IN_RECT(x,y,w,x1,y1,w1,h1) ( (y)>(y1) && (y)<(y1)+(h1) /

                                        && (x)+(w)>(x1) && (x)<(x1)+(w1) )



//横线与矩形碰撞

#define HLINE_ON_RECT(x,y,w,x1,y1,w1,h1) ( (y)>=(y1) && (y)<=(y1)+(h1) /

                                        && (x)+(w)>=(x1) && (x)<=(x1)+(w1) )



//矩形与矩形碰撞

#define RECT_HIT_RECT(x,y,w,h,x1,y1,w1,h1) ( (y)+(h)>(y1) && (y)<(y1)+(h1) /

                                        && (x)+(w)>(x1) && (x)<(x1)+(w1) )
今天就讲到这,其他内容以后慢慢讲。
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值