iOS Sprite Kit didBeginContact 无法正常工作
Posted
技术标签:
【中文标题】iOS Sprite Kit didBeginContact 无法正常工作【英文标题】:iOS Sprite Kit didBeginContact not work correctly 【发布时间】:2014-06-03 05:00:05 【问题描述】:我有 2 张没有三角形背景的图像,我想将一个三角形与另一个连接起来,但 Sprite 套件认为我的图像是正方形而不是三角形,并在不合适的时间叫我 didBeginContact,例如:
我这样创建我的精灵:
self.sprite = [SKSpriteNode spriteNodeWithImageNamed:spriteName];
[self.sprite setSize:CGSizeMake(40, 40)];
self.sprite.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.sprite.size];
self.sprite.physicsBody.mass = 0;
self.sprite.physicsBody.usesPreciseCollisionDetection = YES;
self.sprite.physicsBody.categoryBitMask = Category;
self.sprite.physicsBody.collisionBitMask = 0;
self.sprite.physicsBody.contactTestBitMask = Category;
self.sprite.physicsBody.dynamic = YES;
【问题讨论】:
你得到盒子,你必须手动绘制多边形。应该有行创建工具,如果没有,试试cocos2d。请记住,您的物理模型和您的视图是不同的东西。 SpriteKit 比 Cocos2d 集成了更多。 谢谢,但我认为必须是更简单的解决方案。 最简单的形状是正方形。 【参考方案1】:两个物体之间的接触取决于它们的physicsBody,而不是它们的纹理。所以,当你使用
self.sprite.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:self.sprite.size];
您正在附加一个矩形物理体。
你需要使用方法创建一个三角形的physicsBody:
[SKPhysicsBody bodyWithPolygonFromPath:path];
阅读方法here。
为了获取创建路径的值,您可以使用SKPhysicsBody Path Generator 工具。
【讨论】:
我尝试过但有一些问题,第二个节点在他接触任何东西之前开始 didBiginContact 可能 200 像素。 你对两个三角形使用不同的纹理吗? 首先我尝试相同的三角形,首先向下走并停留在我需要的地方,然后向下移动并在他接触第一个三角形之前启动 didBiginContact,可能有 200 像素远。 尝试使用物理调试器工具,例如可以在此处找到的工具:ymc.ch/en/ios-7-sprite-kit-physics-debugging-tool以上是关于iOS Sprite Kit didBeginContact 无法正常工作的主要内容,如果未能解决你的问题,请参考以下文章