Sprite Kit - iOS 7.1更新后由于比例而导致对象发生碰撞

时间:2014-03-11 20:43:33

标签: objective-c xcode scale sprite-kit ios7.1

没有问题但是在iOS 7.1更新之后,对象正在碰撞2管道'间隙。之前有人说,这可能是因为' yScale'但我无法找到解决方案。

一些代码;

  Pipe *pipe = [[Pipe alloc] initWithImageNamed:pipeImageName];
  [pipe setCenterRect:CGRectMake(26.0/kPipeWidth, 26.0/kPipeWidth, 4.0/kPipeWidth, 4.0/kPipeWidth)];
  [pipe setYScale:height/pipe.size.height];
  [pipe setPosition:CGPointMake(320+(pipe.size.width/2), abs(pipeYOffset + (pipe.size.height/2)))];

  pipe.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:pipe.size];
  [pipe.physicsBody setAffectedByGravity:NO];
  [pipe.physicsBody setDynamic:NO];

任何帮助将不胜感激。谢谢!

2 个答案:

答案 0 :(得分:6)

  Pipe *pipe = [[Pipe alloc] initWithImageNamed:pipeImageName];
  [pipe setCenterRect:CGRectMake(26.0/kPipeWidth, 26.0/kPipeWidth, 4.0/kPipeWidth, 4.0/kPipeWidth)];

//set the physicsBody before X/Yscale
  pipe.physicsBody = [SKPhysicsBody bodyWithRectangleOfSize:pipe.size];

  [pipe setYScale:height/pipe.size.height];
  [pipe setPosition:CGPointMake(320+(pipe.size.width/2), abs(pipeYOffset + (pipe.size.height/2)))];

  [pipe.physicsBody setAffectedByGravity:NO];
  [pipe.physicsBody setDynamic:NO];

这可能会对你有所帮助。 我认为这是ios7.1中的一个错误。

答案 1 :(得分:1)

我有同样的问题,我的游戏今晚发布,现在无法播放!那太累了。 在我看来,iOS 7.0的旧行为是错误的,因为PhysicsBodyies没有用精灵缩放。

由于iOS7.1, PhysicsBodies 显然使其大小适应精灵的比例。 如果事实如此,我还不是百分之百确定,但我很快就会发现。只需下载Xcode更新,我就会在完成一些测试后通知你。