skspritenode 仅检查与子节点的交集

Posted

技术标签:

【中文标题】skspritenode 仅检查与子节点的交集【英文标题】:skspritenode check intersection with child nodes only 【发布时间】:2014-09-25 10:30:10 【问题描述】:

我正在编写一个自上而下的汽车游戏。当我需要检查场景中我的汽车和非物理对象之间的交叉时,我会做一个简单的操作:

CGRectIntersectsRect(car.frame,object.frame);

如果我在“第一层”检查对象,我可以正常工作。如果对象有一个孩子,我如何检查与只有孩子的交集?我尝试类似:

 CGRect rectChild=[object childNodeWithName:@"childnode"].frame;
 CGRectIntersectsRect(car.frame,rectChild);

它不能正常工作,因为childNodeWithName 返回的CGRect 是相对于父级而不是相对于场景...有办法将此矩形转换为场景坐标吗?

【问题讨论】:

【参考方案1】:

自己找:

CGPoint positionInScene = [_worldNode convertPoint:[[object childNodeWithName:@"childnode"] position] fromNode:object];

有了这个我可以用场景坐标检索子节点位置,然后我可以重新创建一个新的 cgrect 来检查交叉点

【讨论】:

以上是关于skspritenode 仅检查与子节点的交集的主要内容,如果未能解决你的问题,请参考以下文章