首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何计算场景中的位置和随机数。SpriteKit

如何计算场景中的位置和随机数。SpriteKit
EN

Stack Overflow用户
提问于 2014-04-21 03:07:21
回答 1查看 114关注 0票数 0

下面是一段代码:

代码语言:javascript
复制
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之间的随机值。但我真正不明白的是如何计算坐标。

如果我想从任何地方产生精灵,使其位于场景的右侧、左侧或底部,该怎么办?我到底该如何计算呢?

EN

回答 1

Stack Overflow用户

发布于 2014-04-21 06:52:14

这应该能起到作用:

代码语言:javascript
复制
CGPoint randomPosition = CGPointMake(arc4random() % (int)CGRectGetWidth(yourSceneInstance.frame),
                                     arc4random() % (int)CGRectGetHeight(yourSceneInstance.frame));
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23186482

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档