我正在使用Apple的SpriteKit创建游戏,我想知道在创建SKSpriteNode对象后找到它的最有效方法是什么。
在一个方法中,我初始化一个精灵节点并为其指定一个名称:
SKSpriteNode* playerBody = [SKSpriteNode spriteNodeWithImageNamed:@"playerBody.png"];
playerBody.name = @"player";
稍后在touchesBegan:withEvent:
方法内部,我想再次找到先前定义的sprite节点并存储它,以便我可以在其上运行操作。首先我尝试这样做:
SKSpriteNode* body = [self childNodeWithName:@"player"];
但是,我已经意识到childNodeWithName:
仅在SKNode
课程中提供,而不是SKSpriteNode
。所以这不起作用。我现在想的是我可以创建一个SKNode
对象并将SKSpriteNode
放在其中。这样我就可以使用上面的方法搜索SKNode
。然而,这看起来有点复杂。还有更好的方法吗?
答案 0 :(得分:3)
SKSpriteNode继承自SKNode。您可以使用childNodeWithName。
SKSpriteNode *someSprite = [SKSpriteNode node];
[someSprite childNodeWithName:@"someChildOfSprite"];
以下评论代码询问如何将SKNode转换为SKSpriteNode:
SKSpriteNode *theChildYouWant = (SKSpriteNode*)[someSprite childNodeWithName:@"someChildOfSprite"];