【问题标题】:iOS Sprite Kit didBeginContact not work correctlyiOS Sprite Kit didBeginContact 无法正常工作
【发布时间】: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 集成了更多。
  • 谢谢,但我认为必须是更简单的解决方案。
  • 最简单的形状是正方形。

标签: ios7 sprite-kit skphysicsbody


【解决方案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
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-11-18
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多