SpriteKit:意外的物理问题

时间:2013-10-14 14:20:23

标签: ios objective-c sprite-kit skshapenode

我想要一个球形精灵每次从地面跳到相同的高度。但是每次跳跃时球的最大高度位置都会增加。

-(id)initWithSize:(CGSize)size {    
  if (self = [super initWithSize:size]) {

      SKNode *ground = [SKNode node];
      ground.physicsBody = [SKPhysicsBody bodyWithEdgeFromPoint:CGPointZero toPoint:CGPointMake(CGRectGetMaxX(self.frame), 0)];
      [self addChild:ground];

      SKShapeNode *ball = [[SKShapeNode alloc] init];
      CGMutablePathRef myPath = CGPathCreateMutable();
      CGPathAddArc(myPath, NULL, 0, 0, 30, 0, M_PI*2, YES);
      ball.path = myPath;
      ball.position = CGPointMake(CGRectGetMidX(self.frame), CGRectGetMaxY(self.frame)-100);
      ball.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:ball.frame.size.width/2];
      ball.physicsBody.linearDamping = 0.0;
      ball.physicsBody.restitution = 1.0;
      [self addChild:ball];

  }
  return self;

}

有什么建议吗?

1 个答案:

答案 0 :(得分:1)

看看两个身体上的恢复和摩擦,而不仅仅是球。如果它在增长而不是缩小,那么物理机构可能会出现错误。在我的测试中,SKShapeNode是出了名的不可靠 - 我会考虑使用SKSpriteNode来保持你的理智。