如何计算场景中的位置和randoms。 SpriteKit

时间:2014-04-20 19:07:21

标签: objective-c math sprite-kit

所以这是一个代码:

static inline CGFloat randomInRange(CGFloat low, CGFloat high) {



CGFloat value = arc4random_uniform(UINT32_MAX) / (CGFloat)UINT32_MAX;
return value * (high - low) +low;
}

static const CGFloat HALO_LOW_ANGLE = 200.0 * M_PI / 180;
static const CGFloat HALO_HIGH_ANGLE = 340.0 * M_PI / 180;
static const CGFloat HALO_SPEED = 100.0;

-(void) spawnHalo {

SKSpriteNode *halo = [SKSpriteNode spriteNodeWithImageNamed:@"Halo"];
halo.position = CGPointMake(randomInRange(halo.size.width / 2, self.size.width - (halo.size.width / 2)), self.size.height + (halo.size.height / 2));
halo.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:16];
CGVector direction = radiansToVector(randomInRange(HALO_LOW_ANGLE, HALO_HIGH_ANGLE));
halo.physicsBody.velocity = CGVectorMake(direction.dx * HALO_SPEED, direction.dy * HALO_SPEED);
halo.physicsBody.restitution = 1.0;
halo.physicsBody.linearDamping = 0.0;
halo.physicsBody.friction = 0.0;
[self.mainLayer addChild:halo];

我首先想要获得0-1之间的随机值。但我真正不了解的是如何计算坐标。

如果我想从任何地方生成精灵,请将其设置为场景的右侧,左侧或底部。我该如何计算呢?

1 个答案:

答案 0 :(得分:0)

这应该可以解决问题:

CGPoint randomPosition = CGPointMake(arc4random() % (int)CGRectGetWidth(yourSceneInstance.frame),
                                     arc4random() % (int)CGRectGetHeight(yourSceneInstance.frame));