Objective c 如何计算场景中的位置和随机数。斯皮特基特

Objective c 如何计算场景中的位置和随机数。斯皮特基特,objective-c,math,sprite-kit,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 c

下面是一个代码:

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之间的随机值。但我真正不懂的是如何计算坐标


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

这应该可以做到:

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

所以你只想在屏幕上的任意位置生成一个节点?我实际上想了解它背后的逻辑,这样我就可以自己编写代码。谈到我提供的代码。我不确定我是否完全理解你在寻找什么,你想知道生成随机位置的限制是什么吗?从你的代码中,我看不出你所做的有什么特别的错误。我知道代码是正确的,它不是我的,我只是一个初学者,所以我并不真正理解代码或背后的逻辑。我要找的是一些解释,说明如何计算在何处生成精灵,以及如何让它像上面的代码那样沿随机方向移动。