iOS SKSpriteNode 错误:从不兼容类型“CGRect”(又名“struct CGRect”)分配给“skspritenode *const __strong”
Posted
技术标签:
【中文标题】iOS SKSpriteNode 错误:从不兼容类型“CGRect”(又名“struct CGRect”)分配给“skspritenode *const __strong”【英文标题】:iOS SKSpriteNode Error: assigning to 'skspritenode *const __strong' from incompatible type 'CGRect' (aka 'struct CGRect') 【发布时间】:2014-07-16 13:54:35 【问题描述】:我正在使用 sprite kit (objective-c) 开发一个 Xcode 项目 我收到了这个错误,我不明白如何解决它,但我试图让两个节点在它们发生冲突时记录下来。
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
我跳过了一堆东西,可能拼错了…… 谢谢! 迈克尔
【问题讨论】:
CGRectIntersectsRect
参数需要为CGRect
。您似乎在传递字符和云,它们似乎是SKSpriteNode
。
有什么我可以做的吗?我需要改变什么?
如果我所说的对您来说没有 100% 的意义,这是本末倒置的情况。您需要退后一步,更好地理解变量类型。如果你愿意花时间学习,网上有很多教程和参考资料。
我明白你的意思,我只是不明白我能做些什么......
试试 character.frame 和 cloud1.frame
【参考方案1】:
我同意您需要从基础开始,但看起来 cmets 已指示您使用框架来获取 CGRects。因此,使用上面的代码,您似乎有两个问题:
-
您没有将 CGRects 传递给 CGRectIntersectsRect
一旦您更正了 1,您就会遇到问题,您似乎正在检查“字符”的矩形,这是您在方法云中创建的一个节点,但从不将该节点添加到场景中。因此它的矩形大小为 0,0。 (除非您的自定义 BBCCharacter 类覆盖 spriteNodeWithImageNamed 并自动将其添加到场景中)。
所以,要么在场景中添加角色:
[self addChild: character];
或者让角色成为指向场景中已经存在的其他东西的指针:
character = [self childNodeWithName:@"character"];
character = self.playerSprite; //etc
【讨论】:
以上是关于iOS SKSpriteNode 错误:从不兼容类型“CGRect”(又名“struct CGRect”)分配给“skspritenode *const __strong”的主要内容,如果未能解决你的问题,请参考以下文章
c++错误:从不兼容的类型'const char *'分配给'char *'
我收到错误消息,“从不兼容的类型“gameViewController”分配给“id avaudioplayerdelegate””[关闭]
错误:从不兼容的指针类型[-Werror = incompatible-pointer-types]初始化。读取= dev_read,Linux