来自Texture的SKPhysicsBody问题

问题描述 投票:0回答:1

过去几天,我一直在互联网/ StackOverflow上进行搜索,但未能成功找到一些我认为以某种方式相互交织的问题的答案。

  1. [当从纹理渲染SKPhysicsBody时,如何防止游戏冻结?
  2. 为什么我的物理机体有时根本不被创建,为什么有时它们的形状不正确?

下面是我用来尝试生成这些支柱的代码(图像附在帖子底部。在将它们移除之前的任何时间点大约有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)

}

Pillar Image

过去几天,我一直在互联网/ StackOverflow上进行搜索,但未能成功找到我认为以某种方式相互交织的一些问题的答案。如何防止我的...

swift sprite-kit skphysicsbody
1个回答
0
投票

您可以使用此扩展名:

© www.soinside.com 2019 - 2024. All rights reserved.