MFC 碰撞测试

本文介绍了在MFC中进行碰撞测试的方法,特别是针对“打砖块”程序中的碰撞问题。通过理解物体运动线路并设置坐标变化,实现了小球的对角线路运动。利用CRect获取客户区大小,通过坐标递增或递减更新小球位置,并在检测到小球与边界碰撞时,反向改变速度,实现连续碰撞效果。
摘要由CSDN通过智能技术生成

 

      结合在下的第一款程序"打砖块"   中的碰撞,在此做一下剖析.

 

   记得刚开始写的时候,碰撞是最大的难点.  当时我和一个小网友一起在研究这个碰撞.  可不是运动时有影子,就是不支持连续碰撞.

 

 直到碰到一位baidu上的朋友.  经过他的指点迷津,终于有些感悟了.

 

接下来简单谈谈我的感想:

  

                        首先要实现碰撞(无论什么图形) , 你必须要了解它的线路, 这是必须的!  当你了解,并且设置此物体的运动路线后,

 

遍可以开始进行下一步实施.    我的打砖块我设置的是小球走对角线路.  就是所谓的取反.  

 

                         首先小球是用Eillpse() 函数绘制的,使用CRect rcClient; GetClientRect(rcClient);  //得到客户区大小

 

 

小球的运动,我们是使用坐标递增或递减的方式.    

 

  qiu.left+=qiu.velX;
  qiu.right+=qiu.velX;
  qiu.top-=qiu.velY;
  qiu.bottom-=qiu.velY;

 

//对了,在此之前需要声明两个变量,分别是小球的X方向速度,和Y方向速度, 用于后面的取反工作.

 

 当我们得到客户区大小的时候.  就可以开始对其碰撞进行测试了 .

 

 

 // qiu 是小球的意思,当小球和客户区的左边和右边碰撞时.  把小球的X方向速度取反.  上面下面碰撞Y方向取反.

 


 if(qiu.left<=rcClient.left || qiu.right>=rcClient.right)
 {
  qiu.velX=-qiu.velX;
 }
 if(qiu.top<=rcClient.top || qiu.bottom>=rcClient.bottom)
 {
  qiu.velY=-qiu.velY;

 }

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值