如何检测 SKSpriteNode 和 SKView SpriteKit 之间的冲突
Posted
技术标签:
【中文标题】如何检测 SKSpriteNode 和 SKView SpriteKit 之间的冲突【英文标题】:How to detect collision between SKSpriteNode and SKView SpriteKit 【发布时间】:2014-05-31 13:26:18 【问题描述】:我有九个SKSpriteNodes
从屏幕的顶部落到底部。我也有SKView
,我可以把它拖到屏幕上。如何动态检测我的SKView
与九个SKSpriteNodes
之一的冲突?
【问题讨论】:
【参考方案1】:SKView
没有physicsBody
属性,所以它不能碰撞。
但是,您可以手动检查 SKView
的 frame
是否与 SKSpriteNode
的框架相交:
- (void)update:(CFTimeInterval)currentTime
if (CGRectIntersectsRect(skView.frame, node.frame)
....
【讨论】:
【参考方案2】:在场景中,您可以检测框架与 SKSpriteNodes 之间的碰撞。
在您的 Scene.m 中,添加 initWithSize:(CGSize)size
中的代码:
self.physicsBody = [SKPhysicsBody bodyWithEdgeLoopFromRect:self.frame];
self.physicsBody.categoryBitMask = kSceneCategory;
self.physicsBody.contactTestBitMask = kSKNodeCategory; // this is your SKSpriteNode's categoryBitMask
在- (void)didBeginContact:(SKPhysicsContact *)contact
,你可以检测到碰撞。
【讨论】:
以上是关于如何检测 SKSpriteNode 和 SKView SpriteKit 之间的冲突的主要内容,如果未能解决你的问题,请参考以下文章
如何检测精灵节点上特定位置的 SKSpriteNode 之间的冲突?
如何找到 SKSpriteNode 的速度作为 x 和 y 值?