ios - 如何检测 SKSpriteNode 何时命中另一个 SKSpriteNode?

标签 ios swift

我正在尝试制作一款游戏,您可以倾斜手机并尝试将球保持在边界内。我似乎无法弄清楚如何让球不通过边界。我有倾斜来移动球,但它只是穿过我的所有边界,我似乎无法弄清楚如何让球在接触到边界时停止。这是我的代码:

 override func didMove(to view: SKView) {
        let border = SKPhysicsBody(edgeLoopFrom: self.frame)
        self.physicsBody = border

        boundary = (self.childNode(withName: "boundry") as! SKSpriteNode) //the boundary is spelled wrong

        airplane = SKSpriteNode(imageNamed: "ball image")
        airplane.physicsBody = SKPhysicsBody(circleOfRadius: 10)
        airplane.position = CGPoint(x: -211.163, y: 367.3)
        airplane.size =  CGSize(width: 50, height: 50)
        airplane.physicsBody?.isDynamic = true
        airplane.physicsBody?.affectedByGravity = false
        airplane.physicsBody?.allowsRotation = true
        airplane.physicsBody?.pinned = false

        self.addChild(airplane)

        if motionManager.isAccelerometerAvailable {
            // 2
            motionManager.accelerometerUpdateInterval = 0.01
            motionManager.startAccelerometerUpdates(to: .main) {
                (data, error) in
                guard let data = data, error == nil else {
                    return
                }

                // 3
                let currentX = self.airplane.position.x
                self.destX = currentX + CGFloat(data.acceleration.x * 500)
                let currentY = self.airplane.position.y
                self.destY = currentY + CGFloat(data.acceleration.y * 500)
            }
        }
    }

    override func update(_ currentTime: TimeInterval) {

        let action = SKAction.moveTo(x: destX, duration: 1)
        let action2 = SKAction.moveTo(y: destY, duration: 1)
        airplane.run(action)
        airplane.run(action2)
    }

最佳答案

在 SpriteKit 中,除非你给它们一组匹配的 collisionBitMask,否则它们不会发生碰撞。 .即 border.collisionBitMaskairplane.collisionBitMask 需要至少有一个非零位是共同的。尝试将两者都设置为 1。

关于ios - 如何检测 SKSpriteNode 何时命中另一个 SKSpriteNode?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55305338/

相关文章:

ios - 应用程序崩溃: Message from debugger : Terminated due to memory issue swift ios

ios - F-Script 可以用来检查 iOS 应用程序吗?

ios - 在旋转时移除 UIPageViewController 上的 pageIndicator

iOS - 如何在 iOS 上实现类似粒子动画的效果

ios - iOS 上的自定义 BLE 广告

ios - 单击 View 时出现导航栏

ios - Apple 更改了 Metal 中允许的矢量格式

iOS(Swift) 应用程序在调用结构体的静态变量后挂起

ios - 创建结构的空数组给我一个错误

objective-c - 为什么我不能使用从 Objective-C 对象到 Swift 属性的 KVC?