iphone - 随机 Sprite 目的地

标签 iphone cocos2d-iphone

我能够使目标沿着屏幕顶部随机生成并在屏幕底部消失。唯一的问题是目标每次只能移动到一个固定点。我希望它们移动到屏幕底部的随机点。有任何想法吗? 谢谢。

这是代码:

-(void)addTarget{

CCSpriteSheet *sheet = [CCSpriteSheet spriteSheetWithFile:@"meteorImgs.png" capacity:50];
[self addChild:sheet];
[[CCSpriteFrameCache sharedSpriteFrameCache] addSpriteFramesWithFile:@"metImg.plist"];

target = [CCSprite spriteWithFile:@"Frame2.png" rect:CGRectMake(0, 0, 60, 120)];


CGSize winSize = [[CCDirector sharedDirector] winSize];
int minY = target.contentSize.height/2;
int maxY = winSize.width*1.5 - target.contentSize.height/2;
int rangeY = maxY - minY;
int actualY = (arc4random() % rangeY) + minY;

target.position = ccp(actualY, target.contentSize.height*5); //- (-target.contentSize.height/2), actualY);
[self addChild:target];

int minDuration = 2.0;
int maxDuration = 4.0;
int rangeDuration = maxDuration - minDuration;
int actualDuration = (arc4random() % rangeDuration) + minDuration;

id actionMove = [CCMoveTo actionWithDuration:actualDuration position:ccp(160,0)];   
id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)];
[target runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];

}

上一篇:

你好,

我用了Ray Wenderlich's code为了这。我的问题是,如何使目标在纵向模式下在屏幕顶部生成,然后移动到屏幕底部。无论我改变什么,都不会发生任何事情。现在,正如教程所说,目标从右向左移动。

我想做的(应该更具体)是,我希望它们从顶部移动到屏幕底部,而不是让目标从屏幕右侧移动到左侧。 (从上到下)。不知何故,代码告诉目标在右侧生成,但我不知道那在哪里。这是代码的主要内容,没有其他内容可以影响目标的位置。

-(void)addTarget {



 CCSprite *target = [CCSprite spriteWithFile:@"dude_jump.png"
             rect:CGRectMake(0, 0, 30, 60)];

 CGSize winSize = [[CCDirector sharedDirector] winSize];
 int minY = target.contentSize.width/2;
 int maxY = winSize.width - target.contentSize.width/2;
 int rangeY = maxY - minY;
 int actualY = (arc4random() % rangeY) + minY;

 target.position = ccp(winSize.width + (target.contentSize.width/2), actualY);
 [self addChild:target];

 int minDuration = 2.0;
 int maxDuration = 4.0;
 int rangeDuration = maxDuration - minDuration;
 int actualDuration = (arc4random() % rangeDuration) + minDuration;

 id actionMove = [CCMoveTo actionWithDuration:actualDuration position:ccp(-target.contentSize.width/2, actualY)];

id actionMoveDone = [CCCallFuncN actionWithTarget:self selector:@selector(spriteMoveFinished:)];
 [target runAction:[CCSequence actions:actionMove, actionMoveDone, nil]];
}

最佳答案

(说实话,作为另一个问题发布可能不会那么令人困惑,但无论如何我都会在这里回答它:P)

您的线路:

id actionMove = [CCMoveTo actionWithDuration:actualDuration position:ccp(160,0)];   

告诉 Sprite 要移动到哪里。如果你想对其进行随机化,则需要确保其 x 位置中包含某种随机函数。

arc4random() 函数生成一个随机数。您需要做的是一些数学运算,以确保它选择的 x 位置仍会显示在您的屏幕上,并将其提供给您的移动操作。

int randomX = arc4random() % something; // fill in how you want to restrict your x value so that the sprite stays on the screen!
id actionMove = [CCMoveTo actionWithDuration:actulDuration position:ccp(randomX, 0)];

另一方面,就像编码练习一样,您最好不要在代码中使用 160、0 等原始数字。将它们放入变量中(或者#defines,如果它们在多个文件中使用)。这样,当您将来想要调整某些内容时,您只需更改其中一个数字,而不是整个代码!

希望这有帮助。祝你好运!

关于iphone - 随机 Sprite 目的地,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3817637/

相关文章:

iphone - 如何从 NSString 连续国际字符准备 NSURL?

ios - 从 UICollectionViewController 导航到 UIViewController 时 UIViewController 闪烁

ios - Box2D 实现问题

cocos2d-iphone - CCCallFunc 和 CCCAllFuncN 有什么区别

iphone - 如何修复 Xcode 预期类型错误

iphone - 即使新版本已获批准并准备销售,AppStore 仍会下载旧版本

iphone - iOS 6 4inch 模拟器 - 标签栏没有响应

ios - 在 IOS 上的 Cocos2d v3 中绘制四边形和立方贝塞尔曲线

iphone 5 的 xcode 4.5 依赖性问题

ios - 如何在 Swift/iOS 中解析 Json 并获取所需的值?