gpt4 book ai didi

ios - SpriteKit : Using SKTextureAtlas causes incorrect Physics Body

转载 作者:行者123 更新时间:2023-12-01 15:56:02 26 4
gpt4 key购买 nike

我正在构建我的第一个 Sprite 套件游戏,最近阅读了一篇文章,说使用 SKTextureAtlas 来提高性能。

因此,我将所有 Sprite 图像迁移到组织好的 .atlas 文件夹中,并相应地更新了代码。然而,现在我的 Sprite 有奇怪的物理实体(主要是过度放大)

例如,我的玩家 Sprite 有三种状态:飞行(平飞)、向上飞行和向下飞行。这三幅图像非常相似,但略有不同( ARM 指向平、向上、向下)

在迁移到纹理图集之前,物理体与图像非常吻合。然而现在,它比图像大得多,并且在 y 轴上稍微拉伸(stretch)。

这是我的player.atlas文件结构:

player-flying-iphone.atlas:

这是我的代码示例:(Player是SKSpriteNode的子类)

let textureAtlas = SKTextureAtlas(named: "player-iphone")
let playerFlyingTexture = textureAtlas.textureNamed("player-flying")
let player = Player(texture: playerFlyingTexture, color: UIColor.clearColor(), size: CGSizeMake(100.0, 100.0))

let physicsBody = SKPhysicsBody(texture: playerFlyingTexture, size: CGSizeMake(100.0, 100.0))
physicsBody.dynamic = true
physicsBody.affectedByGravity = true
physicsBody.usesPreciseCollisionDetection = false
physicsBody.categoryBitMask = CollisionCategories.Player
physicsBody.contactTestBitMask = CollisionCategories.Enemy
physicsBody.collisionBitMask = CollisionCategories.EdgeBody
physicsBody.allowsRotation = false
player.physicsBody = physicsBody

最佳答案

(感谢 @Whirlwind 的帮助)

所以对我来说,解决办法最终是我需要改变这个:

let physicsBody = SKPhysicsBody(texture: self.texture, size: self.size)

..对此..

let physicsBody = SKPhysicsBody(texture: self.texture, alphaThreshold: 0.3, size: self.size)

显然,生成物理体时使用的 SKTextureAtlas 裁剪方法在确定裁剪内容时存在问题,因此明确设置 alphaThreshold 似乎可以解决该问题。

显然,这个值(value)将取决于您自己的形象以及您的透明度。但如果你像我一样有硬边,你应该能够将其设置为任意值并且可以开始使用。

关于ios - SpriteKit : Using SKTextureAtlas causes incorrect Physics Body,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36587720/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com