2016-08-17 72 views
1

在我的遊戲中,我創建了一些受重力影響的球。當遊戲開始時,他們從屏幕外落下並將他們的位置放在底部。沒有其他力量適用於他們。SpriteKit物理每次給予不同的結果

問題是我創建這些球與精確座標,精確的物理屬性,如前面的一個,但結果是不一樣的。它相似但不相同。但我認爲它應該完全一樣,因爲每次價值都是一樣的。

你能明白我在下面這3張照片已經說過了。 enter image description hereenter image description hereenter image description here

你知道爲什麼會發生這種情況嗎?我該如何解決它?

這是我如何創建精靈節點:

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

如果你想確切的結果,每次不要讓物理引擎,以確定應該發生什麼。掌握自己的手。意思是,禁用物理引擎,直到你將對象放在它們的初始位置。然後,使用SKActions在適當的位置移動對象。之後,您可以重新啓用這些對象上的物理實體,並且您可以輕鬆前往。 – Whirlwind

+0

對我來說這不是一種選擇我有多個關卡,並且在每個關卡中都有不同的套球命令。我無法爲每一種不同的情況做到這一點。物理學應該保持一致。 – mkeremkeskin

+0

那麼問題在哪裏?爲每個對象創建一個數組起始位置(或者定義一個代表其起始位置的每個球的CGPoint)。你不能以你想要的方式依賴物理引擎。 – Whirlwind

回答

2

有許多參與制作物理引擎隨機的因素。

的FPS極大地影響了隨機性。在SKSpriteKit Physics中,SKScene中有一個Update方法,每個幀都調用一次,並且與前一幀有時差。通常爲了減少隨機性,你必須以某種方式覆蓋該方法。

或使用其他物理引擎的它是可定製的(子彈物理)。只通過調整StepSimulation函數調用來獲得相同的結果非常容易。

相關問題