鼠标与精灵的碰撞检测

1.代码

bool HelloWorld::ccTouchBegan (CCTouch *pTouch, CCEvent *pEvent)
{
	CCRect rect(pmonsterSprite->getTextureRect());
	CCPoint offsetPoint(pmonsterSprite->getPosition());
	rect.origin.setPoint(offsetPoint.x-rect.size.width/2,offsetPoint.y-rect.size.height/2);
	CCPoint touchPoint = pTouch->locationInView();
	touchPoint=CCDirector::sharedDirector()->convertToGL(touchPoint);
	char info[200];
	sprintf(info,"%d,%d",(int)touchPoint.x,(int)touchPoint.y);
	labelPointInfo->setString(info);
	sprintf(info,"%d,%d,w=%d,h=%d",(int)rect.getMinX(),(int)rect.getMinY(),(int)rect.size.width,(int)rect.size.height);
	labelMonsterInfo->setString(info);
	if(CCRect::CCRectContainsPoint(rect,touchPoint))
	{
		labelinfo->setString("in");
	}
	else
	{
		labelinfo->setString("out");
	}
	return false;
}

2.解说

宽度和高度:pmonsterSprite->getTextureRect()得到的是精灵的当前帧的rect, rect的width和heigth是稳定的,但是它的起点是当前帧在plist文件中的位移,所以不可以使用它的起点位置。

起点:pmonsterSprite->getPosition()返回的是精灵的中心坐标,可以根据宽度和高度,算出起点坐标。

利用CCRect::CCRectContainsPoint()判断一个点是否在矩形内。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值