boundingBox getContentSize

本文探讨了在使用Sprite管理子Sprite时,boundingBox()函数可能导致的定位问题,并提出使用getContentSize()作为替代方法,同时提供了正确的坐标转换逻辑。通过实例演示了如何正确地将子Sprite坐标转换为父Layer坐标系下的坐标,确保交互事件能够准确触发。

boundingBox() ——如果你在一个Sprite(比如A)中加入一个子Sprite(比如B),则B通过boundingBox()获取到的边框,相对于父Layer来说,位置是不准的,这会导致明明按中了B,却得不到该有的响应。(少用boundingbox 可用contentSize代替引擎而已不需要全深入 好用就行)
getContentSize返回的是原sprite的大小
CCRectMake 由上面得到的size 制作rect包围盒
boundingBox 返回的是sprite大小(包括旋转,缩放,变换)——考虑了精灵的变形
p = m_Sprite->convertToNodeSpaceAR(p);
CCSize size = m_Sprite->getContentSize();
CCRect rect = CCRectMake(-size.width*0.5f, -size.height*0.5f, size.width, size.height);

 


  CCPoint world_pos = m_object[i]->m_sprite->convertToNodeSpaceAR(pos);
  CCSize size = m_object[i]->m_sprite->getContentSize();
  CCRect rect = CCRectMake(-size.width*0.5f, -size.height*0.5f, size.width, size.height);
  if (rect.containsPoint(world_pos))
  {

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值