私のゲームでは、重力によって影響を受けるボールをいくつか作り出しています。ゲームが始まると、彼らは画面外から落ち、底に彼らの場所を得ます。他の力はそれらに加えられません。毎回異なる結果を出すSpriteKitの物理学
問題は、正確な座標でこれらのボールを作成していることです。以前のような正確な物理属性ですが、結果は同じではありません。それは類似しているが同じではない。しかし、私はいつも同じ値になっているので、まったく同じであるべきだと思います。
なぜこのようなことが起こっているのでしょうか?どうすれば解決できますか?
これは私がスプライトノードを作成する方法である:
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];
毎回正確な結果が必要な場合は、物理エンジンに何が起こるべきかを判断させないでください。あなた自身の手でコントロールしてください。オブジェクトを初期位置に配置するまで、物理エンジンを無効にします。次に、SKActionsを使用して適切な場所にオブジェクトを移動します。その後、それらのオブジェクトで物理学のボディを再び有効にすることができます。 – Whirlwind
それは私のための選択肢ではありません私は複数のレベルを持っており、各レベルでボールの順序の異なるセット。私はすべての異なる状況のためにそれをすることはできません。物理は一貫して動作するはずです。 – mkeremkeskin
だからどこに問題がありますか?各オブジェクトの開始位置の配列を作成します(またはボールの開始位置を表すボールごとにCGPointを定義します)。物理エンジンに頼ることはできません。 – Whirlwind