[英]In Sprite Kit, when I am spawning nodes, why do they all appear on the top right of the screen?
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))
}
这是我的代码的结果,很明显,我只是让它生成而不是移动到球上,因为我想显示奇怪的生成位置。
尝试这个:
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
Enemy.physicsBody?.affectedByGravity = false
Enemy.physicsBody?.isDynamic = true
中断后删除代码,但Enemy.run(SKAction.move(to: MainPlayer.position, duration: 3))
还尝试在arc4random之后删除+1
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.