游戏中的碰撞(二)

           在上一篇中我们了解了游戏中矩形与矩形,圆形与原型的碰撞,而在本篇中,我们则来研究点与矩形,

点与圆形的碰撞,点与点。本节在游戏中的应用主要是在于判断点击按钮,判断子弹相撞等等方面的应用。

    (一)点与矩形的碰撞

 


       如图片中的点与矩形,我们可以看出点与矩形的3种位置关系。点在矩形内,点在矩形上,点在矩形外。

在游戏中的应用一般用来判断点是否在矩形内。

       坐标系统仍然沿用上一节的坐标系统,假设矩形的左上角的坐标为(x1,y1),横向宽度为w,纵向高度为h,点的坐标为(x2,y2)。同android,windows的屏幕坐标系统一样,我们假设左上角为原点(0,0),横向向右为x轴正向,纵向为y轴正向。

       判断一个点是否在 矩形内,就需要判断点的x坐标是否大于或等于x1,小于等于x1+w,y坐标是否大于y1,小于y1+h.

bool collision(int x2, int y2, int x1, int y1, int w, int h)
{
	if (x2 >= x1 && (x2 <= x1 + w) && y2 >= y1 && (y2 <= y1 + h))
		return true;
	return false;
}


 

       (二)点与圆形的碰撞

     

      如图片中的点与圆形,与矩形一样,点与圆形的位置关系有3种,分别为点在圆形上,点在圆形外,点在圆形内。

在游戏中检测碰撞则为检测点是否在圆形内。

     假设圆形坐标原点为(x1,y1),半径为r,点的坐标为x2,y2

     那么判定一个点是否在圆形内,就需要判定点与坐标原点的距离是否大于圆形的半径,如果大于圆形的半径,那么就没有没在圆形内部,相反则在圆形内部,则依据2点之间的距离公式,我们有sqrt(pow(x1-x2,2),pow(y1-y2,2))>r。不过,考虑到开平方付出的实际代价比较大的问题,我们只需要比较平方即可。


(三)点与点的碰撞

        假设点a坐标为(x1,y1),点b坐标为(x2,y2)

        判定这2点是否相撞则极为简单,只需判定2点是否重合即可,即如果x1=x2,并且y1=y2,那么这2点即重合,也就是这2点发生了碰撞。

 

       

bool collision(int x1, int y1, int x2,int y2)
{
	if (x1==x2&&y1==y2)
		return true;
	return false;
}

       

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值