如何从屏幕中间产生随机图像到任何地方?

时间:2017-03-17 14:06:41

标签: ios swift uiviewcontroller sprite-kit

我很好奇是否可以从屏幕中间以随机速度向屏幕上的任何地方发射图像。

重要的是,它将在没有包含.sks的文件的情况下完成,因为当我尝试打开那种文件时Xcode会崩溃。它必须在UIViewController中完成。

我已经尝试将视图子类化为SKView但没有成功。查看现有项目始终使用SKView和包含.sks的文件,这些文件无法打开。我希望有人可以帮助我!

2 个答案:

答案 0 :(得分:1)

您需要“触发”的每个图像都应该是SKSpriteNode。他们应该是SKScene的孩子。如果您不知道如何创建SKScene或如何使视图控制器呈现它,请尝试在Xcode中创建示例游戏项目 - 文件>新项目>游戏。它会创建一个很好的示例项目,只要您触摸屏幕就会显示一些漂亮的矩形。

一旦你的场景启动并运行,以及你的精灵节点准备好开火,只需为你需要从屏幕中间触发的每个节点运行这几行:

let viewSize = UIScreen.main.bounds.size
let randomX = RandomInt(min: 0, max: viewSize.width)
let randomY = RandomInt(min: 0, max: viewSize.height)
let randomPosition = CGPoint(x: randomX, y: randomY)
let minDuration = 1  // Put here whatever value you feel fit for the minimum duration of flying
let maxDuration = 5  // Put here whatever value you feel fit for the maximum duration of flying
let randomDuration = TimeInterval(RandomInt(min: minDuration, max: maxDuration))
let fireAtWill = SKAction.move(to: randomPosition, duration: randomSpeed)
yourSpriteNode.runAction(fireAtWill)

不要忘记将“yourSpriteNode”替换为您需要触发的精灵节点的名称。

这是RandomInt辅助函数:

func RandomInt(min: Int, max: Int) -> Int {
    return Int(arc4random_uniform(UInt32(max-(min-1)))) + min
}

答案 1 :(得分:0)

你的sks文件问题很奇怪 - 你可能想问一个单独的问题,并提供更多细节。

你可以使用没有sks文件的SpriteKit - 它们只是一个快捷方式,但是如果你需要/想要的话,一切都可以在代码中完成。有关讨论,示例和一些有用的链接,请参阅this SO answer