精灵套件随机位置

时间:2015-09-04 13:14:30

标签: swift sprite-kit

我试图在3点之间随机定位我的1个节点。让我们说这些职位是:

1: CGPoint(x: CGRectGetMidX(self.frame) - 123.5  , y: CGRectGetMidY(self.frame) * 2.5)
2: CGPoint(x: CGRectGetMidX(self.frame) , y: CGRectGetMidY(self.frame) * 2.5)
3: CGPoint(x: CGRectGetMidX(self.frame) + 123.5  , y: CGRectGetMidY(self.frame) * 2.5)

我的代码:

let arabaHareketi = SKAction.moveByX(0, y: -self.frame.size.height * 2,  duration: 2.5)
let turuncuYapılışı = SKTexture(imageNamed: "turuncu")
let turuncu = SKSpriteNode(texture: turuncuYapılışı)
    turuncu.size = CGSizeMake(104, 204)
    turuncu.position = CGPoint(x: CGRectGetMidX(self.frame) - 123.5 + pipeOffSet  , y: CGRectGetMidY(self.frame) * 2.5)
    turuncu.physicsBody = SKPhysicsBody(rectangleOfSize: turuncu.size)
    turuncu.physicsBody?.dynamic = false
    turuncu.runAction(arabaHareketi)
    turuncu.zPosition = 21
    self.addChild(turuncu)

1 个答案:

答案 0 :(得分:2)

您可以使用arc4random()获取随机数。通过在其上运行% 3获取剩余部分。然后使用if语句系统检查余数(在本例中为0,1或2)。这里有一些代码:

let index = arc4random() % 3;
if index == 0 {
    turuncu.position = CGPoint(x: CGRectGetMidX(self.frame) - 123.5  , y: CGRectGetMidY(self.frame) * 2.5)
} else if index == 1 {
    turuncu.position = CGPoint(x: CGRectGetMidX(self.frame) , y: CGRectGetMidY(self.frame) * 2.5)
} else {
    turuncu.position = CGPoint(x: CGRectGetMidX(self.frame) + 123.5  , y: CGRectGetMidY(self.frame) * 2.5)
}

如果您想添加其他可能性,请使用中间else if语句,然后继续链接它。像这样:

if condition1 {
} else if condition2 {
} else if condition3 {
...
} else if conditionN {
} else {
}

如果您选择了更多条件,请确保为余数运算符输入更高的数字。