gpt4 book ai didi

ios - 播放器 SKPhysicsBody 通过其他 SKPhysicsBody swift 4 Xcode 9

转载 作者:行者123 更新时间:2023-11-30 12:07:06 26 4
gpt4 key购买 nike

我正在按照《Swift 3 游戏开发》一书的说明创建一个简单的点击拍打游戏。我有两个 SKSpriteNode,一个是玩家,另一个是静态对象,如果接触就会伤害玩家。

对玩家的伤害将通过categoryBitMask 通过自定义联系逻辑来实现。问题是,当我设置静态对象的categoryBitMask 时,当玩家接触静态对象时,会触发自定义逻辑,但玩家现在会穿过静态对象。

以下是播放器和静态对象的 init() 函数

静态对象

    init() {
super.init(texture: nil, color: .clear, size: initialSize)
createAnimations()
self.run(spinAnimation)
let startTexture = textureAtlas.textureNamed("blade")
self.physicsBody = SKPhysicsBody(texture: startTexture, size: initialSize)
self.physicsBody?.affectedByGravity = false
self.physicsBody?.isDynamic = false
self.physicsBody?.categoryBitMask = PhysicsCategory.enemy.rawValue
self.physicsBody?.collisionBitMask = ~PhysicsCategory.heroDamage.rawValue
self.zPosition = -9
}

玩家

    init() {
super.init(texture: nil, color: .clear, size: initialSize)
let textureBody = textureAtlas.textureNamed("pierre-flying-3")
self.physicsBody = SKPhysicsBody(texture: textureBody, size: self.size)
self.physicsBody?.linearDamping = 0.9
self.physicsBody?.mass = 30
self.physicsBody?.allowsRotation = false
self.zPosition = 1
createAnimations()
self.run(soarAnimation, withKey: "soarAnimation")
self.physicsBody?.categoryBitMask = PhysicsCategory.hero.rawValue
self.physicsBody?.contactTestBitMask = PhysicsCategory.ground.rawValue |
PhysicsCategory.enemy.rawValue |
PhysicsCategory.coin.rawValue |
PhysicsCategory.powerUp.rawValue
self.physicsBody?.collisionBitMask = PhysicsCategory.ground.rawValue
}

如果我删除 isDynamic = false 条件,那么它可以工作,但对象不再是静态的。我尝试增加物体的质量并删除 isDynamic = false 。但由于某些奇怪的原因,这与仅包含 IsDynamic = false 语句具有相同的效果

有什么帮助吗?谢谢

编辑categoryBitMask 值的枚举

enum PhysicsCategory:UInt32 {
case hero = 1
case heroDamage = 2
case ground = 4
case enemy = 8
case coin = 16
case powerUp = 32
}

最佳答案

应该发生碰撞的两个节点之一需要动态的才能发生碰撞。你不能让它们全部静态。

关于ios - 播放器 SKPhysicsBody 通过其他 SKPhysicsBody swift 4 Xcode 9,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46553452/

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