尽管 y 设置为常量值(迅捷精灵),但 Y 位置似乎有所不同



我正在制作一个游戏,其中方块(敌人(被硬编码为y值500,并具有随机x值。我有两个块,一个是SKSpriteNode,另一个是SKSpriteNode的副本,每个块都有自己的函数addEnemy((和addEnemyCopy((

当我运行游戏时,我看到这些块以不同的 y 值生成,即使它们都被硬编码为 y 值 500。我打印了两个方块的位置,我看到有时这两个方块以 y 值 500 生成,有时它们以大约 400 或 300 的 y 值生成。为什么会这样?我将 y 值设置为 500,因此块应始终在 y 轴上以 500 生成,然后在 x 轴上以随机值生成。两个块都以随机 X 值生成,因此该部分工作正常,我确实意识到有时块会在屏幕外生成,但现在忽略它。

以下是相关的代码:

原始敌人功能:

func addEnemy() {
enemy.position = CGPoint(x: CGFloat(arc4random() % UInt32(size.width - enemy.size.width)), y: 500)
print("Enemy position: ")
print(enemy.position)
enemy.zPosition = 1
enemy.setScale(0.4)
enemy.physicsBody = SKPhysicsBody(texture: enemy.texture!, size: enemy.size)
enemy.physicsBody?.affectedByGravity = false
enemy.physicsBody?.categoryBitMask = 1
enemy.physicsBody?.collisionBitMask = 0
enemy.physicsBody?.contactTestBitMask = 2
self.addChild(enemy)

let moveEnemy = SKAction.moveTo(y: player.position.y - 300, duration: 1)
let deleteEnemy = SKAction.removeFromParent()
let enemySequence = SKAction.sequence([moveEnemy, deleteEnemy])
enemy.run(enemySequence,
completion: {
if self.playerLost == false {
if self.score >= 1 {
self.enemy.removeFromParent()
self.scoreLabel.removeFromParent()
self.score += 1
self.setScore()
self.addEnemy()
} else {
self.score += 1
self.setScore()
self.enemy.removeFromParent()
self.addEnemy()
}

}
}
)
}

复制敌人功能:

func addEnemyCopy() {

let enemyCopy = enemy.copy() as! SKSpriteNode
enemy.position = CGPoint(x: CGFloat(arc4random() % UInt32(size.width - (enemy.size.width + 100))), y: 500)
print("Enemy copy: ")
print(enemyCopy.position)
self.addChild(enemyCopy)
let moveEnemy1 = SKAction.moveTo(y: player.position.y - 300, duration: 1)
let deleteEnemy1 = SKAction.removeFromParent()
let enemySequence1 = SKAction.sequence([moveEnemy1, deleteEnemy1])
enemyCopy.run(enemySequence1,
completion: {
if self.playerLost == false {
if self.score >= 1 {
enemyCopy.removeFromParent()
self.scoreLabel.removeFromParent()
self.setScore()
self.addEnemyCopy()
} else {
self.setScore()
self.addEnemyCopy()
}
}
}
)
}

不确定我应该在这里放什么其他代码,或者我是否应该把所有代码都放在这里。请随时在评论中询问以显示更多代码。

谢谢!我知道我总是可以依靠堆栈溢出来帮助我!

复制和粘贴失败:

func addEnemyCopy() {

let enemyCopy = enemy.copy() as! SKSpriteNode
****enemyCopy.position = CGPoint(x: CGFloat(arc4random() % UInt32(size.width - (enemy.size.width + 100))), y: 500)***
print("Enemy copy: ")
print(enemyCopy.position)
self.addChild(enemyCopy)
let moveEnemy1 = SKAction.moveTo(y: player.position.y - 300, duration: 1)
let deleteEnemy1 = SKAction.removeFromParent()
let enemySequence1 = SKAction.sequence([moveEnemy1, deleteEnemy1])
enemyCopy.run(enemySequence1,
completion: {
if self.playerLost == false {
if self.score >= 1 {
enemyCopy.removeFromParent()
self.scoreLabel.removeFromParent()
self.setScore()
self.addEnemyCopy()
} else {
self.setScore()
self.addEnemyCopy()
}
}
}
)
}

我建议更频繁地使用refactor。 也就是说,如果重命名 1 个变量,它将在附加到该声明的任何位置重命名该变量。

相关内容

最新更新