将此操作实施到我的 Sprite-Kit 游戏中的正确方法是什么?
What is the correct way to implement THIS action into my Sprite-Kit Game?
我有一个 birdNode(spriteNode) 在肖像场景中水平移动。
birdNode 正在向屏幕底部的 cgPoint 投放一个蛋(spriteNode)。
我希望 birdNode 在任何 time/position.
处随机掉落他的蛋
我考虑过创建一个 NSTimeInterval,其随机数在 2 秒(birdNode 穿过屏幕所需的时间)之间,使 eggNode 在 birdNode 位置生成,并调用 dropEgg 函数。
我也考虑过随机生成一个CGPoint,在
加载eggNode
birdNode.position.x = randomPoint
然后调用 dropEgg 函数。
我的问题是我应该使用某种方法而不是另一种方法吗?我究竟应该在哪里调用 dropNode 函数。现在我无法让它工作。
我尝试在下面的 currentTime 更新函数中考虑 randomTime/randomPosition 并删除节点,但它会在每一帧渲染时生成鸡蛋,所以我认为那不是正确的方法。
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)
}
使用NSTimer每2秒调用一次dropEgg()
。
喜欢:
NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(dropEgg), userInfo: nil, repeats: true)
我有一个 birdNode(spriteNode) 在肖像场景中水平移动。
birdNode 正在向屏幕底部的 cgPoint 投放一个蛋(spriteNode)。
我希望 birdNode 在任何 time/position.
处随机掉落他的蛋我考虑过创建一个 NSTimeInterval,其随机数在 2 秒(birdNode 穿过屏幕所需的时间)之间,使 eggNode 在 birdNode 位置生成,并调用 dropEgg 函数。
我也考虑过随机生成一个CGPoint,在
加载eggNodebirdNode.position.x = randomPoint
然后调用 dropEgg 函数。
我的问题是我应该使用某种方法而不是另一种方法吗?我究竟应该在哪里调用 dropNode 函数。现在我无法让它工作。
我尝试在下面的 currentTime 更新函数中考虑 randomTime/randomPosition 并删除节点,但它会在每一帧渲染时生成鸡蛋,所以我认为那不是正确的方法。
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)
}
使用NSTimer每2秒调用一次dropEgg()
。
喜欢:
NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(dropEgg), userInfo: nil, repeats: true)