Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/ios/108.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ios 如何在给定的模式中排列SKSpriteNodes_Ios_Sprite Kit_Skspritenode - Fatal编程技术网

Ios 如何在给定的模式中排列SKSpriteNodes

Ios 如何在给定的模式中排列SKSpriteNodes,ios,sprite-kit,skspritenode,Ios,Sprite Kit,Skspritenode,我有几个类似的SKSpriteNodes,我想在屏幕上以特定的模式排列。具体地说,我想让它们围绕另一个中心斯普林泰诺德形成一个圆圈 我将x,y分别放在一个数组中,并使用setposition:CGPointMake(x,y)在屏幕上放置: NSInteger DotX_Pos[] = {50,200,350,500}; NSInteger DotY_Pos[] = {50,200,350,500}; [sprite setPosition:CGPointMake(DotX_Pos[i],Do

我有几个类似的SKSpriteNodes,我想在屏幕上以特定的模式排列。具体地说,我想让它们围绕另一个中心斯普林泰诺德形成一个圆圈

我将x,y分别放在一个数组中,并使用
setposition: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])];
虽然这样做有效,但效率不高,而且随着游戏水平的提高,我想安排越来越多的精灵

有什么好办法可以做到这一点吗

谢谢,
rich

这里有一个方法,它将返回NSValue的集合,每个NSValue包含一个具有适当位置的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;
}
-(NSArray*)获取环形半径的位置:(uint)半径原点:(int)原点原点原点:(int)原点原点和numberOfItems:(uint)numberOfItems
{
NSMutableArray*positions=[[NSMutableArray alloc]initWithCapacity:numberOfItems];
cg浮球角度=0;
CGFloat角度增量=2*M_PI/项目数;
对于(int i=0;i
只需编写一个计算位置的方法即可。