gpt4 book ai didi

swift - 选择生成不同的 SKSpriteNode

转载 作者:行者123 更新时间:2023-11-28 06:29:50 24 4
gpt4 key购买 nike

我正在制作游戏,我有一些物体从屏幕顶部落到底部。我想在对象之间进行选择并放下其中一个。我目前同时掉落所有东西。

 func ShapePicker() -> SKSpriteNode{
let shapeArray = [purpleOctagon, coin, greenTriangle, orangeHexagon]

let MaxValue = self.size.width / 2 - 200
let MinValue = self.size.width / 3 * 0.95

let rangeMax = UInt32(MaxValue)
let rangeMin = UInt32(MinValue)

purpleOctagon.position = CGPoint(x: CGFloat(arc4random_uniform(rangeMin) + rangeMax), y: self.size.height)
self.addChild(purpleOctagon)

greenTriangle.position = CGPoint(x: CGFloat(arc4random_uniform(rangeMin) + rangeMax), y: self.size.height)
self.addChild(greenTriangle)

coin.position = CGPoint(x: CGFloat(arc4random_uniform(rangeMin) + rangeMax), y: self.size.height)
self.addChild(coin)
return shapeArray[Int(arc4random_uniform(UInt32(shapeArray.count)))]

}

我希望程序随机 .addChild 因为现在它只是将它们放在屏幕上。

最佳答案

您的代码暗示您希望所有这些都显示在屏幕上,然后随机掉落一个...所以您确实想继续.addChild。您想要的是让他们不要一下子全部掉落。

因此,您需要将 .physicsBody.pinned 更改为 true 以使其保持在屏幕顶部。

然后,在您的 update() 中,您可以检查经过了多长时间等,并且在特定的 # 秒后,您可以执行 arc4random_uniform 并使用这会导致更改其中一个节点的 .pinned 属性(从而导致那个节点和那个节点只掉落)。

所以,如果硬币是 0,三角形是 1,八边形是 2,那么,在你的 .update 中跟踪耗时,比如 3 秒后,随机检查 0 -2,并且该检查将执行:

switch result {
case 0: // coin
coin.physicsBody?.pinned = false // makes it drop
case 1: // triangle
...

只需确保您的节点在正确的范围内,以便您可以在 update()

中执行逻辑

如果我读错了你的问题,而你只想生成然后放下一个,那么你仍然需要上面的 switch 语句,而不是更改 physicsBody 你会用 .addChild 代替。

所以你的函数内部更像是:

// This can be global or inside of your GameScene:
var myGlobalCurrentTime: CFTimeInterval

override func update(currentTime: CFTimeInterval) {

myGlobalCurrentTime = myTimerUpdateTime(currentTime)

func myDropFunc() {

... // Initialize your nodes

let result = myRandomNumber(3)

switch result {
case 0:
coin.position
= CGPoint(x: CGFloat(arc4random_uniform(rangeMin) + rangeMax),
y: self.size.height)
self.addChild(coin)
case 1:
...
}
}

// Execute the func:
myDropFunc()
}

我仍然对您的代码和问题感到困惑,所以请在评论中澄清,以便我可以在需要时更新此答案。

关于swift - 选择生成不同的 SKSpriteNode,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40639658/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com