1
我正在研究我的游戏,但是当我尝试从所说的产卵敌人时,我会面临一个问题,我只能从场景的顶部和底部产生他们,我不知道为什么从侧面产生敌人Sprite-kit
这是我的计时器:
override func didMoveToView(view: SKView) {
initialzeGame()
NSTimer.scheduledTimerWithTimeInterval(1, target: self, selector: Selector("spawnEnemy"), userInfo: nil, repeats: true)
}
这是休息:
func randomBetweenNumbers(firstNum: CGFloat, secondNum: CGFloat) -> CGFloat {
return CGFloat(arc4random())/CGFloat(UINT32_MAX) * abs(firstNum + secondNum) + min(firstNum, secondNum)
}
func spawnEnemy() {
//supposed to pick random point within the screen width
let Pos = randomBetweenNumbers(0, secondNum: frame.height)
//let PosTwo = randomBetweenNumbers(0, secondNum: frame.height)
let enemy = SKSpriteNode(imageNamed: "zombie") //create a new enemy each time
enemy.position = CGPointMake(CGFloat(Pos), self.frame.size.width/16)
enemy.physicsBody = SKPhysicsBody(circleOfRadius: 7)
enemy.physicsBody?.affectedByGravity = true
enemy.physicsBody?.categoryBitMask = 0
enemy.physicsBody?.contactTestBitMask = 1
enemy.size = CGSize(width: 80, height: 70)
let enmyact = SKAction.moveTo(hero.position, duration: 2)
enemy.runAction(enmyact)
addChild(enemy)
}
你确定敌人不只是在正在被裁剪的区域产卵,还有,你想使用frame.width,而不是frame.height,因为身高>宽度,你的敌人又是在一个不在屏幕上的区域 – Knight0fDragon
@AliMahdi这个:'enemy.physicsBody?.affectedByGravity = true'与这个结合:'enemy.runAction(enmyact)'会产生非常奇怪的结果。我不知道你是怎么没有注意到你自己呢?敌人拥有一个充满活力的身体,受重力影响,意味着物理世界将对这个身体施加一定的力量(并将其拉向某个方向)。同时,你正在使用SKAction来移动你想要的敌人。这将打破物理模拟,你将有一个错误的敌人运动。我想,你想让敌人不受重力影响。 – Whirlwind