我能够使目标沿着屏幕顶部随机生成并在屏幕底部消失。唯一的问题是目标每次只能移动到一个固定点。我希望它们移动到屏幕底部的随机点。有任何想法吗? 谢谢。
这是代码:
-(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/