-2

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

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

如果有人可以,请帮助我。

4

3 回答 3

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

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

于 2013-10-07T07:01:33.903 回答
0

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

此处的更多信息:有关 userData 属性的 Apple 文档

于 2013-10-07T22:17:30.527 回答
0

我建议继承 SKSpriteNode 并添加一个isMoveableBOOL 属性来指定它是否可以移动。

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

例如,在 Xcode 中,您可以键入mySprite.i并且isMoveableBOOL 属性可供选择用于代码完成。

于 2013-10-11T21:07:07.923 回答