先假想一个场景,场景里有一个主角,主角身上有一个物品。假如物品是以主角为父节点的.
现在问题来了,物品现在的坐标系,现在我想判断用户是否点击在该物品上,
那么我怎么得出物品在相对与屏幕的坐标呢?
cocos2dx提供了一个方法:
sprite->getParent()->convertToWorldSpace(sprite->getPosition()),其中sprite为物品精灵的指针,getParent()为获取物品的父结点,convertToWorldSpace()为转换坐标到以此结点为基准的屏幕坐标。
实例:
其中pSprite是一个以另一个精灵为父节点的精灵,需要转换为世界坐标系.
CCPoint m_sprite=pSprite->getParent()->convertToWorldSpace(pSprite->getPosition());
touchbegin获取的点pTouch是世界坐标系.
m_Pos = pTouch->getLocation();
检测是否触摸是否在精灵上:
if(m_Pos.x<m_sprite.x&&m_Pos.x>m_sprite.x-pSprite->getContentSize().width
&&m_Pos.y<m_sprite.y+pSprite->getContentSize().height&&m_Pos.y>m_sprite.y)
{
CCLOG("touchin pSprite!\n");
}