У меня есть birdNode(spriteNode), путешествующий горизонтально по портретной сцене.
BirdNode сбрасывает яйцо (spriteNode) по направлению к cgPoint в нижней части экрана.
Я хочу, чтобы BirdNode случайным образом бросал свое яйцо в любое время/в любом месте.
Я подумал о создании NSTimeInterval со случайным числом между 2 секундами (время, которое требуется birdNode для перемещения по экрану), чтобы создать eggNode в позиции birdNode и вызвать функцию dropEgg.
Я также рассматривал возможность создания случайной точки CGPoint, загружая eggNode в
birdNode.position.x = randomPoint
а затем вызов функции dropEgg.
Мой вопрос в том, должен ли я использовать определенный подход вместо другого? Где именно я должен вызывать функцию dropNode. Прямо сейчас я не могу заставить его работать.
Я попытался рассмотреть randomTime/randomPosition в функции обновления currentTime ниже и удалить узел, но он создает яйца при рендеринге каждого кадра, поэтому я не думаю, что это правильный путь.
override func update(currentTime: CFTimeInterval) {
}
Вот мой код для сбрасывания яйца, создания случайного поплавка dropPoint и полета птицы по экрану.
func dropEgg(){
//aim
let dx = eggNodeTarget.position.x - birdNode.position.x
let dy = eggNodeTarget.position.y - birdNode.position.y
let angle = atan2(dy, dx)
dragonProjectileNode.zRotation = angle
//Seek
var vx = turretNode.position.x
var vy = turretNode.position.y
//creates eggNodeSprite
loadEggNode()
//shoot
let shootAction = SKAction.moveTo(CGPointMake(vx, vy),duration: 0.75)
eggNode.runAction(shootAction)
}
func loadRandDropLocationX() -> CGFloat{
//or minNodeTimeValue?
var MinNodeSpawnValue = self.frame.size.width * 0.2
//or maxNodeTimeValue?
var MaxNodeSpawnValue = self.frame.size.width * 0.8
//or randomTime?
var randomPointUInt32 = UInt32(MaxSpawnValue - MinSpawnValue)
return (CGFloat(arc4random_uniform(randomPointUInt32)) + MinNodeSpawnValue)
}
func dragonMoveRight(){
let moveDragon = SKAction.moveTo(loadRandDestinationRight(), duration: 2.3)
dragonNode.runAction(moveDragon)
}