使用特定的image.png或image.jpg调整SKSpriteNode和SKPhysicsBody



我正在开发一个带有特定形状的角色的游戏,我正在创建一个带有以下行的SKSpriteNode对象:

let rockl:SKSpriteNode = SKSpriteNode(color: UIColor.redColor(), size: CGSize(width: newweight*ancho/16, height: alto/5))

我正在用这条线分配一个实体:

rockl.physicsBody = SKPhysicsBody(rectangleOfSize: pipeBotton.size)

我用这行来分配图像:

rockl.texture = SKTexture(imageNamed: "character.png")
rockl.texture.filteringMode = SKTextureFilteringMode.Nearest

但是边界与图像的边界不同。如何根据图像调整对象?或者创建自定义形状的技术是什么?

您需要使用SKPhyiscsBody(texture, size)创建physicsBody。来自文档:

当您的精灵具有要复制的形状时,请使用此方法在其物理体中。纹理缩放到新大小,然后分析。一个新的物理体被创建,它包括所有纹理中alpha值为非零的纹理像素。的形状该机构试图在性能和精确例如,如果保留精细细节,则可能会忽略这些细节将导致严重的性能损失。

你也可以直接用纹理创建SKSpriteNode,而不是先用平面颜色创建:

let rocklTexture = SKTexture(imageNamed: "character.png")
rocklTexture.filteringMode = SKTextureFilteringMode.Nearest
let rocklSize = CGSize(width: newweight*ancho/16, height: alto/5)
let rockl = SKSpriteNode(texture: rocklTexture, size: rocklSize)
rockl.physicsBody = SKPhysicsBody(texture: rocklTexture, size: rocklSize)

最新更新