2013-09-30 12 views
9

シーンを「ズームアウト」する正しい方法は何ですか?SpriteKit - スケールと物理を設定する

私は、画面全体に発射する衝動を適用するオブジェクトを持っています。たとえば、約100 pxの距離で発射します。これは期待通りに機能します。飛行力を増やし、飛行密度を上げます。

私が持っている問題はズームしていることです。場面ではsetScaleになり、すべてのノードが期待通りに縮小されます。

しかし、同じ量の飛行物体(ズームアウトされたもの)の代わりに、それは距離の2倍以上飛行します。

スケールの前後でオブジェクトの質量/密度などを記録すると、期待通りに同じになります。

なぜ同じ量の飛行をしないのですか?スケールに合うようにインパルスを変えようと試みましたが、それはうまく動作しませんでした。

トリッキーな質問...

アイデアありがとうございます。

答えて

10

簡単に修正に必要な他の(クリスLaPollo、RWの作者に感謝)

[self runAction:[SKAction scaleTo:0.5 duration:0]]; 

がNothing。

奇妙なことは、あなたがこの警告を取得し、それが仕事をdoenstとして、あなたは

[self setScale:0.5]; 

を行うことができないです - が、アクションを実行することはありません - 奇妙な!

SKScene:SKSceneのスケールを設定しても効果はありません。

+2

[self setScale:0.5]は実行できません。シーンを拡大縮小しないでください。下の私の答えを見てください。 – JKallio

+2

これ以上行うことはできません: "SKScene:SKSceneのスケールをアニメートすることは効果がありません。" – edo42

10

あなたはSKSceneをスケールすることは想定されていません(SKSceneでsetScaleメソッドを試してみてください)。代わりにサイズ変更を試してください。

myScene.scaleMode = SKSceneScaleModeAspectFill; 

そしてズームながら:

myScene.size = CGSizeMake(myScene.size.width + dx, myScene.size.height + dy); 

* Apple documentationは言う:

がSKSceneScaleModeResizeFillにscaleModeプロパティを設定します。スプライトキットは自動的にシーンのサイズを変更し、ビューのサイズに常に一致させます。

1

検索後にここにいた私のように、シーンの縮尺を変えてズームアウトすると、もはや機能しません。 代わりに、空のSKNodeにすべてのノードをカプセル化し、この1上のアクションを実行します。

self.rootNode = [SKNode node]; 
// Add your children nodes here to the rootnode. 
[self addChild:self.rootNode]; 
// Zoom out 
[self.rootNode runAction:[SKAction scaleBy:2 duration:5]]; 
// Zoom in 
[self.rootNode runAction:[SKAction scaleBy:.5 duration:5]]; 

自己SKSceneです。 私はこれが役立つことを願っています。

関連する問題