我正在编写一个 cocos2d-x 应用程序。我有一个精灵,上面有几个子精灵。这些精灵代表屏幕上的一个逻辑对象,该对象被转换为一个整体对象。现在,当对象被触摸时,我需要发现哪个子精灵被触摸了。
问题是,虽然父精灵给了我当前的所有信息(边界框、比例、旋转等),但子精灵保持原来的数字,尽管与父精灵一起转换,我不知道找出为孩子计算“真实”尺寸的正确方法。
在我看来,有两个事实导致了所有困难:
- 子边界框的初始尺寸是相对于父边界框的初始尺寸报告的。
- 我无法计算父级旋转后父级的初始边界框(见下图),因此我无法计算父精灵的左下角现在在哪里,我需要它作为子变换的关系点。
这是这种情况的示意图:
因此,总而言之,为了检查触摸是否击中子精灵,我需要根据父级的变换计算子级的当前边界框。我可以计算出孩子的缩放和旋转,但我不知道它应该相对于父级定位在哪里,因为父级的边界框与开始时的边界框非常不同。在故事中添加奇怪的锚点,它变得更加复杂。完美的解决方案是获取原始精灵的顶点而不是边界框。可能吗?
有任何想法吗?我错过了什么吗?