在我的 Sprite-Kit 游戏中实现这个动作的正确方法是啥?

Posted

技术标签:

【中文标题】在我的 Sprite-Kit 游戏中实现这个动作的正确方法是啥?【英文标题】:What is the correct way to implement THIS action into my Sprite-Kit Game?在我的 Sprite-Kit 游戏中实现这个动作的正确方法是什么? 【发布时间】:2016-06-24 04:09:18 【问题描述】:

我有一个birdNode(spriteNode) 在肖像场景中水平移动。

birdNode 正在向屏幕底部的 cgPoint 投下一个蛋(spriteNode)。

我希望birdNode在任何时间/位置随机掉落他的蛋。

我考虑过创建一个 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)

【问题讨论】:

【参考方案1】:

使用NSTimer 每2 秒调用一次dropEgg()

喜欢:

NSTimer.scheduledTimerWithTimeInterval(2, target: self, selector: #selector(dropEgg), userInfo: nil, repeats: true)

【讨论】:

以上是关于在我的 Sprite-Kit 游戏中实现这个动作的正确方法是啥?的主要内容,如果未能解决你的问题,请参考以下文章

如何在我的游戏中实现脚本?

如何在我的 Sprite Kit 游戏应用中实现 Facebook 和 Twitter 发布?

在 Windows 窗体中实现 gameloop [关闭]

Sprite-kit:检测左右触摸

如何在 UITableview 的 didSelectRowAtIndexPath 中实现动作?

replacescene 在我的游戏 cocos2d ios 中停止背景音乐