我正在尝试在 Swift 中使用 SpriteKit 制作游戏。
我有一个移动的 Sprite ,它是一个宽度为 (sprite.frame.size.width) 和高度为 2*(sprite.frame.size.width) 的矩形
我只想检查宽度为 (sprite.frame.size.width) 和高度为 (sprite.frame.size.width)< 的正方形下半部分的碰撞/强>
我设置了 sprite.anchorPoint = CGPointMake(0.5, 0.25) 并使用方法 CGRectIntersectsRect 检查与另一个 Sprite 的碰撞。但这不起作用。碰撞区域保持为第一个矩形。
我不想使用调用 physicsBody 的方法,因为游戏中没有其他物理。
我在这里错过了什么?
最佳答案
我实际上发现了这个可用于缩小框架的UIEdgeInsets 函数。如果 spriteB 是有问题的 Sprite ,那么不要像这样测试:
如果 CGRectIntersectsRect(spriteA.frame, spriteB.frame) {
//有事情发生
}
只是将边缘插入到spriteB的下半部分,像这样:
如果 CGRectIntersectsRect(spriteA.frame, UIEdgeInsetsInsetRect(spriteB.frame, UIEdgeInsetsMake(spriteB.frame.height/2, 0, 0, 0))) {
//有事情发生
}
关于swift - 如果 Sprite 的下半部分很重要,如何检查碰撞(想想有茎的樱桃),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30689006/