如果精灵的下半部分很重要,如何检查碰撞(想想有茎的樱桃)

How to check collision if only bottom half of the sprite matters (think of a cherry with a stem)

我正在尝试在 Swift 中使用 SpriteKit 制作游戏。

我有一个移动的精灵,它是一个矩形,宽度为 (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 检查与另一个精灵的碰撞.但这不起作用。碰撞区域保持为第一个矩形。

我不想使用调用 physicsBody 的方法,因为游戏中没有其他物理。

我在这里错过了什么?

我实际上发现了这个 UIEdgeInsets 函数可以用来缩小框架。如果 spriteB 是有问题的精灵,那么不要像这样测试:

if CGRectIntersectsRect(spriteA.frame, spriteB.frame) { // something happens }

只需插入 spriteB 下半部分的边缘,如下所示:

if CGRectIntersectsRect(spriteA.frame, UIEdgeInsetsInsetRect(spriteB.frame, UIEdgeInsetsMake(spriteB.frame.height/2 , 0 , 0 , 0))) { // something happens }