【发布时间】:2017-06-21 13:01:08
【问题描述】:
MainPlayer 是中心的主球,我希望蓝色敌方节点在每一侧随机生成,但它们都出现在右上角。我很确定这段代码是正确的,但我无法让它工作。看起来它们在正确的地方产卵,但由于某种原因它只是缩放到右上角。
func Enemies() {
let xPos = randomBetweenNumbers(firstNum: 0, secondNum: frame.width )
let Enemy = SKSpriteNode(imageNamed: "Ball")
Enemy.zPosition = -1.0
Enemy.size = CGSize(width: 20.0, height: 20.0)
Enemy.physicsBody?.categoryBitMask = PhysicsCategory.Enemy
Enemy.physicsBody?.contactTestBitMask = PhysicsCategory.Smallball | PhysicsCategory.MainBall
Enemy.physicsBody?.collisionBitMask = PhysicsCategory.Smallball | PhysicsCategory.MainBall
let randomNumber = arc4random() % 4 + 1
switch randomNumber {
case 0:
Enemy.position.x = 0
var positionY = arc4random_uniform(UInt32(frame.size.height))
Enemy.position.y = CGFloat(positionY)
self.addChild(Enemy)
break
case 1:
Enemy.position.y = 0
var positionX = arc4random_uniform(UInt32(frame.size.width))
Enemy.position.x = CGFloat(positionX)
self.addChild(Enemy)
break
case 2:
Enemy.position.y = frame.size.height
var positionX = arc4random_uniform(UInt32(frame.size.width))
Enemy.position.x = CGFloat(positionX)
self.addChild(Enemy)
break
case 3:
Enemy.position.x = frame.size.width
var positionY = arc4random_uniform(UInt32(frame.size.height))
Enemy.position.y = CGFloat(positionY)
self.addChild(Enemy)
break
default:
break
}
Enemy.position = CGPoint(x: CGFloat(xPos), y: self.frame.size.height / 2)
Enemy.physicsBody = SKPhysicsBody(circleOfRadius: 7)
Enemy.physicsBody?.affectedByGravity = false
Enemy.physicsBody?.categoryBitMask = 0
Enemy.physicsBody?.contactTestBitMask = 1
addChild(Enemy)
Enemy.run(SKAction.move(to: MainPlayer.position, duration: 3))
}
这是我的代码的结果,显然,我只是让它生成而不是移动到球上,因为我想显示奇怪的生成位置。
【问题讨论】:
-
你场景的ancorPoint很可能是0.5,0.5,也就是说0.0,0.0在场景的中心。因此,要在红球左侧生成节点,您应该在 -scene.size.width/2 之间生成节点(不是减号)。
标签: ios sprite-kit swift3