Sprite kit 精灵套件创建选择菜单

Sprite kit 精灵套件创建选择菜单,sprite-kit,Sprite Kit,我刚刚完成了我的精灵套件塔防游戏的核心功能的实现,现在我正在尝试完善游戏。首先,我想做一个选择菜单来选择要放置的塔。这是在游戏中完成的,如王国冲刺,你可以选择4个不同的塔。然而,我有点不知道该怎么做 //选择塔的图像 如有任何建议,将不胜感激 谢谢正如承诺的那样,这里有一个小代码可以让你继续,我现在没有我的mac电脑,所以可能会有一些打字错误,但概念是这样的: 首先,定义地图上哪些区域能够容纳塔,这可以通过几种方式完成,但由于是SpriteKit,我将使用名为towerPlot的精灵来表示可以容

我刚刚完成了我的精灵套件塔防游戏的核心功能的实现,现在我正在尝试完善游戏。首先,我想做一个选择菜单来选择要放置的塔。这是在游戏中完成的,如王国冲刺,你可以选择4个不同的塔。然而,我有点不知道该怎么做

//选择塔的图像

如有任何建议,将不胜感激


谢谢

正如承诺的那样,这里有一个小代码可以让你继续,我现在没有我的mac电脑,所以可能会有一些打字错误,但概念是这样的:

首先,定义地图上哪些区域能够容纳塔,这可以通过几种方式完成,但由于是SpriteKit,我将使用名为
towerPlot
的精灵来表示可以容纳塔的区域

定义一种方法,将绘图添加到具有以下内容的位置:

-(void)addTowerPlotAt:(CGPoint)location{
    SKSpriteNode* plot = [SKSpriteNode spriteNodeWithImageNamed: "@plotImage";
    plot.location = location;
    plot.name = @"towerPlot";
    plot.zPosition = 1;  //if needed
    [self addChild: plot];
}
[self addTowerPlotAt:CGPointMake(someX, someY)];
[self addTowerPlotAt:CGPointMake(otherX, otherY)];
您的viewDidLoad方法添加如下内容:

-(void)addTowerPlotAt:(CGPoint)location{
    SKSpriteNode* plot = [SKSpriteNode spriteNodeWithImageNamed: "@plotImage";
    plot.location = location;
    plot.name = @"towerPlot";
    plot.zPosition = 1;  //if needed
    [self addChild: plot];
}
[self addTowerPlotAt:CGPointMake(someX, someY)];
[self addTowerPlotAt:CGPointMake(otherX, otherY)];
以便将绘图添加到正确的位置

下一步是检查触摸是否位于绘图上

-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event {
    /* Called when a touch begins */

    UITouch *touch = [touches anyObject];
    CGPoint location = [touch locationInNode:self];
    SKNode *node = [self nodeAtPoint:location];

    //if the node is a plot, bring up the menu
    if ([node.name isEqualToString:@"towerPlot"]) {
        //add the menu frame
        SKSpriteNode* towerMenu = [SKSpriteNode spriteNodeWithImageNamed: "@TowerMenu";
        towerMenu.position = node.position;

        SKSpriteNode* towerType1= [SKSpriteNode spriteNodeWithImageNamed: "@Tower1";
        towerType1.position = CGPointMake(someX, someY); /* remember this is relative to the menu, the next tower type has an example */
        towerType1.name = @"towerType1";
        [towerMenu addChild:towerType1];

        SKSpriteNode* towerType2= [SKSpriteNode spriteNodeWithImageNamed: "@Tower2";
        towerType2.position = CGPointMake((towerType2.size.width/2)-(towerMenu.size.width/2), 0); /* would add it to to the middle left of the menu */
        towerType1.name = @"towerType2";
        [towerMenu addChild:towerType2];

        //add and position as many tower types as you need
        [self addChild: towerMenu];
    }

    if ([node.name isEqualToString:@"towerType1"]) {
        //code to build the tower here
    }
}

你还需要一些其他的小技巧,比如在选择一座塔后删除菜单,如果它们的层次很奇怪,确保点击返回一个节点名称,但我想这就是它的要点。

我对你想要什么有点困惑,我从来没有玩过你提到的游戏。您点击某个位置建造一座塔,然后弹出一个包含要建造的塔的选择的小菜单,这是一种情况吗?如果是这种情况,那么您可以只进行第一次触摸检查,如果触摸位置在塔“绘图”中,如果是,则打开一个子菜单精灵,其中塔类型按钮作为子菜单精灵添加到该精灵中。下一次触摸将检测菜单中四种塔类型中的哪一种被触摸。如果我的描述和你想说的相符,我会为你添加一些代码。@AndyHeard哇,绝对正确!谢谢你的回答:)@AndyHeard哦,你的描述和我说的完全吻合