gpt4 book ai didi

swift - 在 swift 中调用函数时遇到问题

转载 作者:搜寻专家 更新时间:2023-11-01 05:38:07 25 4
gpt4 key购买 nike

当我调用我的 didbegincontact 函数时,这个函数应该通过增加宽度来增加我的蛇的大小。但是,当建立联系时,它会调用该函数一次,然后再也不会调用它。我不确定为什么在建立联系时它不会继续增加我的蛇的大小

func increaseSnakeSize(increment: CGFloat){

snake.snake1.size = CGSizeMake(snake.size.width + increment, snake.size.height + increment)
snake.snake2.size = CGSizeMake(snake.size.width + increment, snake.size.height + increment)
snake.snake3.size = CGSizeMake(snake.size.width + increment, snake.size.height + increment)
print(snake.snake1.size)
}

//didBeginContact

if (firstBody.categoryBitMask & physicsCategory.snakeCategory == 0b1) && (secondBody.categoryBitMask & physicsCategory.foodCategory == 0b10 ){

score++
scoreLabel.text = "\(score)"
food.removeFromParent()
addFood()
increaseSnakeSize(2)
}

最佳答案

当进行初始接触时,蛇长到 22x22,但它的物理体大小保持在 20x20。一个解决方案是为初始接触创建一个 22x22 的新物理体,下一个接触为 24x24,之后的接触为 26x26,......例如,

func increaseSnakeSize (increment: CGFloat) {
snake.snake1.size = CGSizeMake(snake.size.width + increment, snake.size.height + increment)
// Create a new, larger physics body that matches the size of the snake
snake.snake1.physicsBody = SKPhysicsBody(circleOfRadius:snake.size.width/2.0)
// Configure the physics body's property accordingly
snake.snake1.physicsBody?.affectedByGravity = false
...
}

另一个潜在的问题是 contact.bodyAcontact.bodyB 的顺序可以在联系人之间切换。您需要检查蛇是否是第一具尸体,食物是第二具尸体,食物是第一具尸体, 蛇是第二具尸体。这是一个例子

func didBeginContact (contact: SKPhysicsContact) {

var firstBody, secondBody: SKPhysicsBody!

if contact.bodyA.categoryBitMask < contact.bodyB.categoryBitMask {
firstBody = contact.bodyA
secondBody = contact.bodyB
} else {
firstBody = contact.bodyB
secondBody = contact.bodyA
}

if (firstBody.categoryBitMask == physicsCategory.snakeCategory) && (secondBody.categoryBitMask == physicsCategory.foodCategory ) {
// Increase size of the snake

}

    let bitMask = contact.BodyA.categoryBitMask | contact.BodyB.categoryBitMask

if bitMask == physicsCategory.snakeCategory | physicsCategory.foodCategory {
// Increase size of the snake
}

关于swift - 在 swift 中调用函数时遇到问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34460418/

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