gpt4 book ai didi

ios - 使SKSprites注册碰撞但不相互影响

转载 作者:行者123 更新时间:2023-11-29 11:41:34 26 4
gpt4 key购买 nike

我想在我的游戏中添加能量提升,但是当我的 Sprite 击中能量提升 Sprite 时,他会偏离路线,因为游戏已经记录了一次碰撞,我猜物理学开始发挥作用,当我点击屏幕时,我的 Sprite 跳到空中, 击中通电并停止向上移动并再次掉落。

我需要 sprite 跳起来,收集 powerup sprite 和分数上升(分数上升代码已完成)但我不知道如何让 2 个 sprite 不注册碰撞。

    //Create the PowerUp Coin to add score
func createCoin() {

coinPlus5 = SKSpriteNode(imageNamed: "coin1")
coinPlus5.name = "coinPlus5"
coinPlus5.position.x = self.frame.size.width*2.6
coinPlus5.position.y = CGFloat.randomBetweenNumbers(firstNum: -(self.frame.size.height / 2.8), secondNum: (self.frame.size.height / 2.4))
coinPlus5.zPosition = 11
coinPlus5.size = CGSize(width: 50, height: 50)
hitPowerup = false

// Add Physics Bodys
coinPlus5.physicsBody = SKPhysicsBody(texture: coinPlus5.texture!, size: CGSize(width: coinPlus5.size.width, height: coinPlus5.size.height))


//enemyBird1.physicsBody = SKPhysicsBody(circleOfRadius: self.size.height/13)
coinPlus5.physicsBody?.allowsRotation = false
coinPlus5.physicsBody?.affectedByGravity = false
coinPlus5.physicsBody?.isDynamic = false
// Add Collision Bitmasks
coinPlus5.physicsBody?.categoryBitMask = ColliderType.Pipes

而角色 Sprite 代码是:

 func initialise() {

self.name = "Bird"
self.zPosition = 3
self.size = CGSize(width: 130, height: 110)
self.anchorPoint = CGPoint(x: 0.5, y: 0.5)






self.physicsBody = SKPhysicsBody(texture: self.texture!,
size: CGSize(width: self.size.width,
height: self.size.height))

// Add Physics Bodys
self.physicsBody?.allowsRotation = false
self.physicsBody?.affectedByGravity = false
self.physicsBody?.mass = CGFloat(-100)
// Add Collision Bitmasks
self.physicsBody?.categoryBitMask = ColliderType.Bird
self.physicsBody?.collisionBitMask = ColliderType.Ground | ColliderType.Pipes
self.physicsBody?.contactTestBitMask = ColliderType.Ground | ColliderType.Pipes | ColliderType.Score


}

最佳答案

目前您的硬币的物理类别是 ColliderType.Pipes .你已经设置了鸟的 collisionBitMask与地面和管道碰撞(ColliderType.Ground | ColliderType.Pipes)。这意味着您的玩家将与硬币发生物理碰撞。

要解决此问题,您可能需要一种新的硬币碰撞器类型。你会希望硬币成为玩家的一部分 contactTestBitMask因此您可以检测到玩家何时获得硬币,但不是玩家的 collisionBitMask 的一部分所以它们不会影响你的物理。

关于ios - 使SKSprites注册碰撞但不相互影响,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46244675/

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