iOS SKSpriteNode错误:分配给' skspritenode * const __strong'来自不兼容的类型' CGRect' (又名' struct CGRect')

时间:2014-07-16 13:54:36

标签: objective-c xcode sprite-kit collision skspritenode

我正在使用sprite工具包中的Xcode项目(objective-c) 我收到这个错误,我不明白如何解决它,但我想在碰撞时让两个节点记录。

iOS SKSpriteNode错误:

assigning to 'skspritenode *const __strong' from incompatible type 'CGRect' (aka 'struct                   CGRect')

我的代码在这里:

//This is the .m file

-(void) Clouds{
SKSpriteNode* character = [BBCharacter  spriteNodeWithImageNamed:@"character1"];

[self enumerateChildNodesWithName:@"cloud1" usingBlock:^(SKNode *node, BOOL *stop) {
    if (node.position.x < -380 || node.position.y < 0){ //node.position.x < -380
        [node removeFromParent];
        NSLog(@"DELETE");
    }
    else{
        node.position = CGPointMake(node.position.x - 1, node.position.y);

    }

    if (CGRectIntersectsRect (character, cloud1)) {
        NSLog(@"Intersection");
    }


}];
}
//This is the .h file
@interface{
}
@property (nonatomic, strong) BBCharacter *playerSprite;
@end

我正在跳过一堆东西,可能拼错了...... 谢谢! 迈克尔

1 个答案:

答案 0 :(得分:0)

我将同意你需要从基础知识开始,但看起来评论指出你使用框架来获得CGRects。因此,使用上面的代码,您看起来有两个问题:

  1. 您没有将CGRects传递给CGRectIntersectsRect
  2. 一旦你纠正1,你就会遇到一个问题,你似乎正在检查“字符”的矩形,这是你在方法云中创建的一个节点,但是从来没有将该节点添加到场景中。因此它的rect的大小为0,0。 (除非您的自定义BBCharacter类重写spriteNodeWithImageNamed并自动将其添加到场景中。)
  3. 所以,要么在场景中添加角色:

    [self addChild: character];
    

    或者让角色成为指向场景中已有的其他东西的指针:

    character = [self childNodeWithName:@"character"];
    character = self.playerSprite; //etc