过去几天,我一直在互联网/ StackOverflow上进行搜索,但未能成功找到一些我认为以某种方式相互交织的问题的答案。
下面是我用来尝试生成这些支柱的代码(图像附在帖子底部。在将它们移除之前的任何时间点大约有6-8个。当我将形状更改为一个矩形时,我完全没有延迟/冻结,并且每次都正确创建了物理对象。
此SKPhysicsBody渲染是否过于复杂,或者有一种方法可以使我的游戏平稳运行,同时仍然生成正确形状的物理对象?下面是我用来在游戏中创建墙时使用的功能。
func createWalls(){
let scoreNode = SKSpriteNode() wallPair = SKNode() wallPair.name = "wallPair" //MARK: - Top Wall Setup let topWall = SKSpriteNode(imageNamed: "Pillar") topWall.size = CGSize(width: 100, height: 700) topWall.physicsBody = SKPhysicsBody(texture: topWall.texture!, size: topWall.size) topWall.position = CGPoint(x: self.frame.maxX+50, y: 0 + 400) topWall.physicsBody?.categoryBitMask = PhysicsCategory.Wall topWall.physicsBody?.collisionBitMask = PhysicsCategory.Character topWall.physicsBody?.contactTestBitMask = PhysicsCategory.Character topWall.physicsBody?.isDynamic = false topWall.physicsBody?.affectedByGravity = false topWall.zRotation = .pi //MARK: - Bot Wall Setup let botWall = SKSpriteNode(imageNamed: "Pillar") botWall.size = CGSize(width: 100, height: 700) botWall.physicsBody = SKPhysicsBody(texture: botWall.texture!, size: botWall.size) botWall.position = CGPoint(x: self.frame.maxX+50, y: 0 - 400) botWall.physicsBody?.categoryBitMask = PhysicsCategory.Wall botWall.physicsBody?.collisionBitMask = PhysicsCategory.Character botWall.physicsBody?.contactTestBitMask = PhysicsCategory.Character botWall.physicsBody?.isDynamic = false botWall.physicsBody?.affectedByGravity = false scoreNode.size = CGSize(width: 1, height: 600) scoreNode.position = CGPoint(x: topWall.position.x+15, y: 0) scoreNode.physicsBody = SKPhysicsBody(rectangleOf: scoreNode.size) scoreNode.physicsBody?.affectedByGravity = false scoreNode.physicsBody?.isDynamic = false scoreNode.physicsBody?.categoryBitMask = PhysicsCategory.Score scoreNode.physicsBody?.collisionBitMask = 0 scoreNode.physicsBody?.contactTestBitMask = PhysicsCategory.Character scoreNode.color = SKColor.blue wallPair.addChild(topWall) wallPair.addChild(botWall) wallPair.zPosition = 1 let randomPosition = CGFloat.random(min: -200, max: 200) wallPair.position.y = wallPair.position.y + randomPosition wallPair.addChild(scoreNode) wallPair.run(moveAndRemove) self.addChild(wallPair)
}
过去几天,我一直在互联网/ StackOverflow上进行搜索,但未能成功找到我认为以某种方式相互交织的一些问题的答案。如何防止我的...
您可以使用此扩展名: