В моей игре я создаю несколько шаров, которые выполняются гравитацией. Когда игра начинается, они выпадают из экрана и получают свои места внизу. Никакая другая сила не применяется к ним.Физика SpriteKit дает разные результаты каждый раз
Проблема заключается в том, что я создаю эти шары с точными координатами, точными физическими атрибутами, такими как предыдущий, но результат не является тем же. Это похоже, но не так. Но я думаю, что это должно быть точно так же, потому что в каждый момент значения одинаковы.
Вы можете понять, что я сказал на этих 3 рисунках ниже.
У вас есть идеи, почему это происходит? Как я могу это решить?
Это, как я создаю спрайт узлы:
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