在我的游戏中,我创造了一些受重力影响的球。当游戏开始时,它们会从屏幕上掉下来并在底部获得它们的位置。没有其他力量适用于他们。
问题是我用精确的坐标,精确的物理属性创建这些球,如前一个,但结果不一样。它类似但不相同。但我认为它应该完全相同,因为每次值都相同。
你知道为什么会这样吗?我该如何解决?
这就是我创建精灵节点的方法:
BallSpriteNode *sprite = [BallSpriteNode spriteNodeWithTexture:ballTexture];
sprite.xScale = scale;
sprite.yScale = scale;
sprite.physicsBody = [SKPhysicsBody bodyWithCircleOfRadius:sprite.size.width/2];
sprite.physicsBody.density = 1.0f;
sprite.physicsBody.restitution = 0;
sprite.physicsBody.dynamic = YES;
sprite.physicsBody.categoryBitMask = ballHitCategory;
sprite.physicsBody.contactTestBitMask = ballHitCategory;
sprite.physicsBody.collisionBitMask = ballHitCategory;
CGPoint startPosition = CGPointMake(xPosition, yPosition);
sprite.position = startPosition;
[bounceScene addChild:sprite];
答案 0 :(得分:2)
有很多因素使物理引擎不那么随意。
FPS极大地影响了随机性。在SKSpriteKit Physics中,SKScene中有一个Update方法,每个帧调用一次,并带有前一帧的时差。通常为了减少随机性,你必须以某种方式覆盖该方法。
或者使用其他可定制的物理引擎(Bullet Physics)。仅通过调整StepSimulation函数调用就可以很容易地得到相同的结果。