ios - 在 Sprite Kit 中确定一个点是否位于物理体的边界内

标签 ios game-physics sprite-kit

我正在使用 Sprite Kit 创建一个涉及气球的游戏。气球图像是一个长矩形(虚线),但我使用多边形(实线)在气球本身周围定义了一个物理体。我希望玩家能够“戳破”气球。我使用以下代码块来实现此目的:

- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    UITouch *touch = [touches anyObject];
    NSArray *nodes = [self nodesAtPoint:[touch locationInNode:self]];
    for (SKNode *node in nodes) {
        [node removeFromParent];
        SKAction *pop = [SKAction playSoundFileNamed:@"pop.wav" waitForCompletion:NO];
        [self runAction:pop];
    }
}

不幸的是,当一堆气球中有多个气球时,此方法可能会导致单击一次弹出多个气球。这是因为 Sprite 图像重叠(即使物理体不重叠)。还有一个不良效果,即轻敲绳子会产生与轻敲气球相同的效果。

我可以访问触摸点的坐标,但是是否有可能检测一个点是否位于物理体定义的区域内(而不是节点)?

enter image description here

最佳答案

使用物理世界的bodyAtPoint:方法:

SKPhysicsBody* body = [self.scene.physicsWorld bodyAtPoint:location];

关于ios - 在 Sprite Kit 中确定一个点是否位于物理体的边界内,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20946494/

相关文章:

ios - 触摸 SKShapeNode 不工作

ios - Firebase 对 snapshot.value 的排序说明

ios - watchOS 2 - 如何随机选择 UIButtons

javascript - 如何加速这个移动算法?在Javascript中

java - 创建一个文本文件,读取并比较其中的整数

ios - 添加分享按钮 - Swift

ios - 使用 RxSwift 观察 UITextField.editing

ios - 遍历 UIImage 的所有像素

ios - Swift Jump Method 物体与地面碰撞

ios - SpriteKit 在触摸时移动物理体(空气曲棍球游戏)