我有一个birdNode(spriteNode)在肖像场景中水平移动。
birdNode 正在向屏幕底部的 cgPoint 扔下一个蛋(spriteNode)。
我希望 BirdNode 在任何时间/位置随机掉落他的蛋。
我考虑过创建一个 NSTimeInterval,其中包含 2 秒之间的随机数(birdNode 穿过屏幕所需的时间),使 EggNode 在birdNode 位置生成,并调用 dropEgg 函数。
我还考虑过生成一个随机CGPoint,加载eggNode于
birdNode.position.x = randomPoint
然后调用 dropEgg 函数。
我的问题是我应该使用某种方法而不是另一种方法?我到底应该在哪里调用 dropNode 函数。现在我无法让它工作。
我尝试在下面的 currentTime 更新函数中考虑 randomTime/randomPosition 并删除 Node,但它在每个帧渲染时都会产生鸡蛋,所以我认为这不是正确的方法。
override func update(currentTime: CFTimeInterval) {
}
这是我的代码,用于放下鸡蛋,并创建随机 dropPoint float ,以及小鸟飞过屏幕。
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)
}
最佳答案
使用NSTimer每 2 秒调用一次 dropEgg()
。
喜欢:
NSTimer.scheduledTimerWithTimeInterval(2,目标:self,选择器:#selector(dropEgg),userInfo:nil,重复:true)
关于swift - 在我的 Sprite-Kit 游戏中实现此操作的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38005455/