swift - 在我的 Sprite-Kit 游戏中实现此操作的正确方法是什么?

标签 swift random sprite-kit skspritenode skaction

我有一个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/

相关文章:

Swift 计时器检查 TouchesEnded

ios - 将可视格式的约束转换为 NSLayoutAnchor API

ios - 如何在创建对象时快速自定义 Parse 中的 ObjectId

ios - 为什么我无法在 iOS 中将字典中的值追加到数组中?

c# - 为什么我的随机数生成器在 C# 中看起来不是随机的?

ios - iAd 定位不正确

ios - 如何在 Objective-C 的不同 View 中共享本地变量

unix - 使用VM(虚拟机)时可以设置dev/random吗?

java - 随机选择子节点后如何获取 Firebase 实时数据库中子节点的 key

swift - Swift 中闭包表达式的等效性,例如 SKAction 完成