【问题标题】:Sprite Kit - object colliding because of scale after iOS 7.1 updateSprite Kit - iOS 7.1 更新后对象因缩放而发生碰撞
【发布时间】:2014-03-11 20:43:33
【问题描述】:

没有问题,但在 iOS 7.1 更新后,对象正在碰撞 2pipes 的间隙。之前有人说过,可能是因为'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];

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

【问题讨论】:

  • 仅供参考,身体的形状不受 xScale/yScale 的影响。万一这就是问题所在。
  • @LearnCocos2D 谢谢,那我该怎么解决呢?还有为什么在 iOS 7.1 更新后会出现这种情况?

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


【解决方案1】:
  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中的一个错误。

【讨论】:

    【解决方案2】:

    我有同样的问题,我的游戏今晚发布了,现在无法玩了!这完全糟透了。 在我看来,iOS 7.0 的旧行为是有问题的,因为 PhysicsBodyies 没有随精灵缩放。

    从 iOS7.1 开始,PhysicsBodies 显然 根据精灵的比例调整它们的大小。 我还不是 100% 确定这是否真的如此,但我很快就会发现。刚下载Xcode更新,等我测试完再告诉你。

    【讨论】:

    • 谢谢,@Ender 的回答解决了我们的问题。只需在 X/Yscale 之前设置physicsBody。
    • 很高兴你把它整理好了。经过一些测试,我实际上可以确认 PhysicsBodies 现在可以随精灵缩放。
    猜你喜欢
    • 2013-10-28
    • 1970-01-01
    • 2014-01-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多