Ios7 使精灵无法移动

Ios7 使精灵无法移动,ios7,sprite-kit,Ios7,Sprite Kit,我创建了一个用于形状识别的SpriteKit游戏,其中有两个相同的形状,一个在场景的下部,另一个要匹配的在场景的上部。我通过调用另一个类中的方法来创建这些形状,该类包含创建形状的代码 我能够以正确的方式做所有的事情,并且工作得很好。但我无法找到如何使上侧形状保持静态。意味着用户必须能够仅将下侧形状拖动到上侧形状以进行匹配,但不应能够拖动上侧形状以与下侧形状匹配。到目前为止,我已经在苹果公司的SpriteKit编程指南中进行了搜索,但没有任何线索可以帮助我完成上述任务 如果有人可以,请帮助我 简单

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

我能够以正确的方式做所有的事情,并且工作得很好。但我无法找到如何使上侧形状保持静态。意味着用户必须能够仅将下侧形状拖动到上侧形状以进行匹配,但不应能够拖动上侧形状以与下侧形状匹配。到目前为止,我已经在苹果公司的SpriteKit编程指南中进行了搜索,但没有任何线索可以帮助我完成上述任务


如果有人可以,请帮助我

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

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

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

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


此处的更多信息:

我建议对SKSpriteNode进行子类化,并添加一个
isMoveable
BOOL属性来指定它是否可以移动

其他答案肯定会起作用,但两者都缺乏适当命名属性和通过Xcode代码完成功能访问属性的优势


例如,在Xcode中键入
mySprite.i
,可以选择
isMoveable
BOOL属性来完成代码

虽然这会起作用,但子类化SKSpriteNode并添加
isMoveable
BOOL属性可能是更好的方法。使用
名称
属性有点不妥,因为现在属性的名称不再反映它的真正功能。@Prototypic我同意,但程序员想要一个简单的解决方案。使用用户数据而不是名称是另一个更好的选择。