我有几个类似的SKSpriteNodes,我想在屏幕上以特定的模式排列。具体来说,我希望它们围绕另一个中心SKSpriteNode排列。
我将每个x,y放在一个数组中并使用setPostion:CGPointMake(x,y)
放在屏幕上:
NSInteger DotX_Pos[] = {50,200,350,500};
NSInteger DotY_Pos[] = {50,200,350,500};
[sprite setPosition:CGPointMake(DotX_Pos[i],DotY_Pos[i])];
虽然这种方法有效,但效率并不高,而且随着游戏关卡的推进,我希望安排越来越多的精灵。
如何完成这项任务?
感谢, 富
答案 0 :(得分:0)
这是一个方法,它将返回一个NSValues集合,每个NSValues包含一个具有适当位置的CGPoint。您可以传入半径,原点x和y以及所需的精灵数量,并将它们均匀地围绕圆圈展开。要从NSValue *值中提取CGPoint,请使用[value CGPointValue]。祝你好运。
-(NSArray*)getPositionsForCircleWithRadius:(uint)radius originXPos:(int)originXPos originYPos:(int)originYPos andNumberOfItems:(uint)numberOfItems
{
NSMutableArray* positions = [[NSMutableArray alloc]initWithCapacity:numberOfItems];
CGFloat angle = 0;
CGFloat angleIncrement = 2*M_PI/numberOfItems;
for (int i = 0; i < numberOfItems; i++)
{
int pointX = originXPos + radius*cos(angle);
int pointY = originYPos + radius*sin(angle);
CGPoint position = CGPointMake(pointX, pointY);
[positions addObject:[NSValue valueWithCGPoint:position]];
angle += angleIncrement;
}
return positions;
}