让精灵变得不可动摇

时间:2013-10-07 04:00:05

标签: ios7 sprite-kit

我创建了一个用于形状识别的SpriteKit游戏,其中有两个相同的形状,一个位于场景的下半部分,而另一个要匹配的场景位于场景的上方。我通过调用其他类的方法创建这些形状,其中包含创建形状的代码。

我能够以正确的方式完成所有事情并且工作正常。但我无法找到如何使上侧形状静止。平均用户必须能够仅将下侧形状拖动到上侧形状以进行匹配,但是不应该能够拖动上侧形状以匹配下侧形状。到目前为止,我已经在Apple的SpriteKit编程指南中进行了搜索,但是没有这样的线索可以帮助我完成上述任务。

如果有人可以帮助我。

3 个答案:

答案 0 :(得分:1)

简单的方法是在创建它们时设置它们的名称。使用常量是一种简单的方法,因此您可以确保添加/检查正确的名称。

static NSString * const kCanMoveMe = @"movable";
static NSString * const kCanNotMoveMe = @"not-movable";

// for example
SKSpriteNode *sprite = [SKSpriteNode spriteNodeWithImageNamed:imageName];
sprite.name = kCanMoveMe

SKSpriteNode *sprite2 = [SKSpriteNode spriteNodeWithImageNamed:imageName];
sprite.name = kCanNotMoveMe

然后当您触摸检查名称,然后您知道是否可以移动它。

答案 1 :(得分:0)

您还可以利用SKNode .userData属性存储实际精灵的自定义节点数据,如果它是可移动的,或者任何其他游戏特定数据。

此处有更多信息:Apple documentation about the userData property

答案 2 :(得分:0)

我建议继承SKSpriteNode并添加isMoveable BOOL属性来指定它是否能够被移动。

其他答案肯定会有效,但两者都缺乏通过Xcode代码完成功能正确命名和访问属性的优势。

例如,在Xcode中,您可以键入mySprite.iisMoveable BOOL属性可供选择代码完成。