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 仅检查与子节点的交集的主要内容,如果未能解决你的问题,请参考以下文章

Overring touchesEnded in SKSpriteNode - 检查场景中是不是有任何节点在点下

当他们应该检查是否接触时,SKSpriteNodes会互相反弹

如何检测精灵节点上特定位置的 SKSpriteNode 之间的冲突?

检查没有物理实体的 SKSprite 节点之间的碰撞

阻止 SKSpriteNode 减速

线性代数之——正交向量与子空间