In meinem Spiel erstelle ich einige Kugeln, die durch Schwerkraft bewirkt werden. Wenn das Spiel beginnt, fallen sie aus dem Bildschirm und bekommen ihre Plätze unten. Keine andere Kraft wird auf sie angewendet.SpriteKit Physik gibt jedes Mal andere Ergebnisse
Das Problem ist, ich erstelle diese Kugeln mit genauen Koordinaten, genaue Physik Attribute wie vorherige, aber das Ergebnis ist nicht das gleiche. Es ist ähnlich, aber nicht gleich. Aber ich denke, es sollte genau so sein, denn zu jeder Zeit sind die Werte gleich.
Sie können verstehen, was ich in diesen 3 Bildern unten gesagt habe.
Haben Sie eine Idee, warum das passiert? Wie kann ich es lösen? Diese
ist, wie ich die Sprite-Knoten erstellen:
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];
Wenn Sie jedes Mal genaue Ergebnisse wollen, lassen Sie die Physik-Engine nicht bestimmen, was passieren soll. Nehmen Sie eine Kontrolle in Ihren eigenen Händen. Bedeutet, deaktivieren Sie die Physik-Engine, bis Sie Objekte an ihren ursprünglichen Positionen platzieren. Verwenden Sie dann SKActions, um Objekte gegebenenfalls zu verschieben. Danach können Sie Physikkörper für diese Objekte wieder aktivieren, und Sie können loslegen. – Whirlwind
Es ist keine Option für mich Ich habe mehrere Level und in jedem Level verschiedene Bällchenreihenfolge. Ich kann es nicht für jede andere Situation tun. Die Physik sollte sich konsequent verhalten. – mkeremkeskin
Wo ist das Problem? Machen Sie für jedes Objekt ein Array von Startpositionen (oder definieren Sie einen CGPoint pro Ball, der seine Startposition darstellt). Sie können sich nicht auf die Physik-Engine verlassen, wie Sie es möchten. – Whirlwind