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会互相反弹