【问题标题】:My nodes aren't colliding我的节点没有碰撞
【发布时间】:2017-09-01 23:25:00
【问题描述】:
class GameScene: SKScene, SKPhysicsContactDelegate {

let balls = [
    SKSpriteNode(imageNamed: "blueball.png"),
    SKSpriteNode(imageNamed: "greenball.png"),
    SKSpriteNode(imageNamed: "realredball.png")
]


let redRectangle = SKSpriteNode(imageNamed: "redrectangle.png")
let blueRectangle = SKSpriteNode(imageNamed: "bluerectangle.png")
let greenRectangle = SKSpriteNode(imageNamed: "greenrectangle.png")

override func didMove(to view: SKView) {
    spawnBalls()
    rectangles()
    physicsWorld.contactDelegate = self

}
override func touchesBegan(_ touches: Set<UITouch>, with event:      UIEvent?) {
        for ball in balls{
            ball.physicsBody = SKPhysicsBody()
            ball.physicsBody?.affectedByGravity = true
            }
   }

func spawnBalls() {

    let ball = balls[Int(arc4random_uniform(UInt32(balls.count)))]
    ball.physicsBody = SKPhysicsBody()
    ball.physicsBody?.affectedByGravity = false
    ball.position = CGPoint(x: 0, y: 250)
    ball.size = CGSize(width: 70, height: 70)
    ball.physicsBody?.categoryBitMask = 0
    ball.physicsBody?.collisionBitMask = 1
    self.addChild(ball)
}

func rectangles() {
    redRectangle.position = CGPoint(x: -316.5, y: -657)
    redRectangle.size = CGSize(width: 400, height: 20)
    redRectangle.physicsBody = SKPhysicsBody()
    redRectangle.physicsBody?.categoryBitMask = 1
    redRectangle.physicsBody?.collisionBitMask = 0
    blueRectangle.size = CGSize(width: 400, height: 20)
    blueRectangle.position = CGPoint(x: -100, y: -657)
    blueRectangle.physicsBody = SKPhysicsBody()
    greenRectangle.position = CGPoint(x: 0, y: -657)
    greenRectangle.size = CGSize(width: 400, height: 20)
    greenRectangle.physicsBody = SKPhysicsBody()
    self.addChild(redRectangle)
    self.addChild(blueRectangle)
    self.addChild(greenRectangle)
}

}

我希望球落下并与矩形节点接触,尽管看起来球只是穿过它们。我使用了碰撞和类别位掩码。我想知道是否有人可以帮助解决这个问题,谢谢。

【问题讨论】:

  • 球应该只与红色矩形碰撞,是吗?
  • 如果其他人有同样的问题,你能发布解决方案吗?您可以发布自己问题的答案。

标签: ios swift sprite-kit


【解决方案1】:

你正确地初始化了球,但是通过在touchesBegan(_:) 中创建一个新的来移除它们的物理体。只需从touchesBegan(_:) 函数中删除这一行:

 ball.physicsBody = SKPhysicsBody()

【讨论】:

  • 谢谢,但我删除了线,球仍然穿过红色矩形节点
猜你喜欢
  • 2018-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-04-11
  • 2022-01-09
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多